Прямая инициализация объекта со значением перечислителя, преобразованного в целомC++

Программы на C++. Форум разработчиков
Anonymous
Прямая инициализация объекта со значением перечислителя, преобразованного в целом

Сообщение Anonymous »

В следующей упрощенной программе я стараюсь создать std :: vector размером с объекта в соответствии со значением перечислителя:

Код: Выделить всё

#include 

enum class E { Count };

int main() {
std::vector vec( size_t( E::Count ) );
}
< /code>
Он отлично работает в GCC, но другие компиляторы жалуются. < /p>

 clang: < /li>
< /ol>
error: parameter declarator cannot be qualified
6 |     std::vector vec( size_t( E::Count ) );
< /code>

 msvc: < /li>
< /ol>
error C2751: 'E::Count': the name of a function parameter cannot be qualified
Онлайн демо: https://gcc.godbolt.org/z/sp3mfpgb9
Какую реализацию здесь правильная?

Подробнее здесь: https://stackoverflow.com/questions/794 ... in-integer

Вернуться в «C++»