类型名T :: type :: value中期望的unqualified-id

时间:2018-09-24 10:11:48

标签: c++ c++14

考虑以下代码:

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

其中typeT的成员类型,而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 :(得分:5)

修复:

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

您正在此处访问一个值,因此不需要typename

::中的范围解析运算符T::type::意味着type只能是一个类型,在那里没有歧义,因此typename是不必要的。