c++ - 类型名 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.
如何纠正这个?
解决方案
使固定:
template <class T>
bool constexpr value = T::type::value;
您正在此处访问一个值,因此typename
不需要。
范围解析运算符::
意味着T::type::
只能type
是一种类型,没有歧义,因此typename
是不必要的。
推荐阅读
- html - 如何在行布局中包装 flexbox 的内容?
- python - 按 id 过滤 TensorFlow 数据集
- python - 如何以相反的顺序获取numpy多维数组的索引?
- python - 如何根据列值和行值连接两个df?
- c# - C# utf 字符串转换,无法正确显示的字符被转换为“未知字符” - 如何防止这种情况?
- go - 如何在此 Go 频道为空之前取消订阅?
- python - 如何将函数添加到 eval 函数的全局列表中?
- java - 将spring boot lib文件夹移到jar之外
- java - 移动没有窗口标题栏的 JFrame
- excel - 过滤使用数据模型 vba 创建的数据透视表的非空白单元格