Согласно этой статье, этот фрагмент кода должен работать:
Код: Выделить всё
struct Something
{
int x;
int y {}; // default initializer with default value
int z { 2 }; // default initializer with specific value
};
int main()
{
Something s1;
Something s2 { 5, 6, 7 }; // this cause error C2440 in MSVC2015
Something s3 {};
return 0;
}
Код: Выделить всё
..\TestAnything\main.cpp(11): error C2440: 'initializing': cannot convert from 'initializer list' to 'Something'
..\TestAnything\main.cpp(11): note: No constructor could take the source type, or constructor overload resolution was ambiguous
Код: Выделить всё
struct Something
{
int x;
int y; // no default initializer
int z; // no default initializer
};
int main()
{
Something s1;
Something s2 { 5, 6, 7 }; // this works fine
Something s3 {};
return 0;
}
Поскольку мне не удалось найти никаких заметок об этой практике в cppreference, я Я не уверен, использую ли я UB или это просто ошибка MSVC2015. Есть идеи?
Подробнее здесь: https://stackoverflow.com/questions/793 ... error-c244
Мобильная версия