При тестировании компилятора VS2015 С++ я наткнулся на странную ошибку с ключевым словом default
. Если я это сделаю:
struct Dummy
{
Dummy() = default;
Dummy(const Dummy &) = delete;
};
int main()
{
const Dummy& ref = Dummy();
return 0;
}
Я получаю
ошибка C2280: 'Dummy:: Dummy (const Dummy &)': попытка ссылки на удаленную функцию
примечание: см. объявление "Dummy:: Dummy"
Но если я использую пустой конструктор
struct Dummy
{
Dummy() {}
Dummy(const Dummy &) = delete;
};
int main()
{
const Dummy& ref = Dummy();
return 0;
}
Код компилируется. Запуск первого примера с g++ или clang не вызывает ошибок.
Почему использование конструктора по умолчанию с VS2015 попытается использовать конструктор копирования, где он не находится в g++ или clang?