В то же время аналогичный синтаксис return void{} не распознается Clang:
Код: Выделить всё
template
T foo() { return T(); }
template
T bar() { return T{}; }
int main() {
// ok everywhere
foo();
// error in Clang
bar();
}
Код: Выделить всё
error: illegal initializer type 'void'
В cppreference я не нашел ответа: и T(), и T{} должны вести себя одинаково для неагрегированных типов. А по поводу типа void особых замечаний нет.
Это просто баг Clang, или наоборот, это единственный компилятор, строго следующий стандарту?
Подробнее здесь: https://stackoverflow.com/questions/765 ... -return-st
Мобильная версия