请考虑以下代码:
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)
怎么纠正这个?
固定:
template <class T>
bool constexpr value = T::type::value;
Run Code Online (Sandbox Code Playgroud)
您在此处访问值,因此typename不需要.
范围解析操作者::在T::type::意味着type只能是一种类型的,没有歧义存在,因此typename是不必要的.
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |