В следующем простом фрагменте коды:Clang жалуется на «не может переопределить удаленную функцию» пока функция не будет удалена
#include <cstddef>
struct B
{
virtual ~B() = default;
static void operator delete(void *, int);
static void * operator new(size_t, int);
};
struct C : B
{
virtual ~C() = default;
};
лязг 3.7 жалуется, что «не удаленная функция„~ C“не может переопределить удаленную функцию» : http://goo.gl/Ax6oth
Ни Visual Studio, ни GCC не сообщают об ошибке в этом коде. Это дефект клана или что?
с правильными подписями, он компилирует – sp2danny
Я предполагаю, что Clang отвергает его на основе третьей точки пули в [\ [class.dtor \]/5] (http://eel.is/c+ + проект/class.dtor # 5). Я не совсем уверен, правильное ли это чтение. –
это право не компилировать его, но сообщение об ошибке менее полезно – sp2danny