gcc 8 и clang 7 не принимают следующий код, который должен по умолчанию создавать временный тип unsigned int
:
unsigned int ui = unsigned int{};
clang 7 сообщает об ошибке, такой как
<source>:6:22: error: expected primary-expression before 'unsigned'
Visual C ++ 2015 и 2017 принимают это.
Очевидно, это работает с типом, таким как int
, или любым типом класса, который может быть создан по умолчанию.
Это правильный код C ++ 14 (и в этом случае ошибка clang и gcc)? Если нет, то почему? Какие типы, кроме неподписанных, будут иметь такое же ограничение?