首页 > 解决方案 > 类型名 T::type::value 中的预期 unqualified-id

问题描述

考虑以下代码:

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

Wheretype是 的成员类型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.

如何纠正这个?

标签: c++c++14

解决方案


使固定:

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

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

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


推荐阅读