Учитывая этот код (wandbox):
struct X
{
explicit operator int() { return 0; }
};
int main()
{
auto y = int{X{}};
}
И следующие параметры компилятора:
-std = С++ 1z -Wall -Wextra -Wpedantic
-
g++
(проверенные версии: 7, 6.1, 5.3) отказывается компилировать код со следующей ошибкойerror: не может преобразовать 'X' в 'int' при инициализации
-
clang++
(проверенные версии: 4, 3.8, 3.6) счастливо компилирует сниппет.
Какой компилятор делает здесь правильную вещь?
cppreference кажется, что синтаксис auto var = type{...}
должен вызывать явное преобразование.