Ожидаемый неквалифицированный идентификатор в имени типа T :: type :: value - PullRequest
0 голосов
/ 24 сентября 2018

Рассмотрим следующий код:

template <class T>
bool value = typename T::type::value;

Где type - тип элемента T, а value - статический элемент данных type.

Я скомпилировал с clang++-6.0 -std=c++14 и он выдал:

a.cc:2:37: error: expected '(' for function-style cast or type construction
bool value = typename T::type::value;
             ~~~~~~~~~~~~~~~~~~~~~~~^
1 error generated.

Как это исправить?

1 Ответ

0 голосов
/ 24 сентября 2018

Исправлено:

template <class T>
bool constexpr value = T::type::value;

Здесь вы получаете доступ к значению, поэтому typename не требуется.

Оператор разрешения области :: в T::type:: подразумевает, что type может быть только типом, здесь нет двусмысленности, поэтому typename не требуется.

...