typename T :: type :: value中的预期unqualified-id

Jia*_* Xu 1 c++ c++14

请考虑以下代码:

template <class T>
bool value = typename T::type::value;
Run Code Online (Sandbox Code Playgroud)

哪里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.
Run Code Online (Sandbox Code Playgroud)

怎么纠正这个?

Max*_*kin 5

固定:

template <class T>
bool constexpr value = T::type::value;
Run Code Online (Sandbox Code Playgroud)

您在此处访问值,因此typename不需要.

范围解析操作者::在T::type::意味着type只能是一种类型的,没有歧义存在,因此typename是不必要的.