c++ - 错误:constexpr 成员变量之前缺少模板参数
问题描述
我查看了一些类似的问题,但没有找到任何适用于我的用例的解决方案。我有一个 constexpr 变量,我想用默认参数作为模板,但我似乎无法让它工作:
// Test.hpp
class Test
{
public:
template <bool val = false>
constexpr static bool MY_BOOL = val;
};
// Test.cpp
#include "Test.hpp"
#include <iostream>
int main()
{
std::cout << Test::MY_BOOL << "\n";
return 0;
}
g++ 编译器错误:
Test.cpp: In function ‘int main()’:
Test.cpp:6:29: error: missing template arguments before ‘<<’ token
std::cout << Test::MY_BOOL << "\n";
请让我知道我做错了什么/如果可以解决。谢谢!
解决方案
模板名称后面的模板参数列表只能用于函数模板。对于变量模板、类模板或别名模板,即使您不想提供任何显式参数,也至少需要空列表<>
。
要使用您的默认模板参数false
:
std::cout << Test::MY_BOOL<> << "\n";
推荐阅读
- javascript - 如何将数字数组映射到计时值
- awk - awk 根据列号 4 在每个 uniq 模式之前添加单词
- three.js - 我需要使用第一张图片中的数据来绘制圆柱,放置两个圆柱点 B 不重合(如第二张图片)
- c - 切杆问题递归自顶向下实现中的价格不匹配
- html - 在角度 8 中更改复选框检查值时触发 ng 更改
- pipe - 使用管道的素数
- python - 我无法使用一种方法删除 s3 对象,但我可以使用另一种方法删除。(obj.delete 与 delete_object)
- slurm - Snakemake slurm 输出文件重定向到新目录
- vnc - 为什么在 VNC 中运行的应用程序显示在主机而不是客户端?
- java - 在 MIPS 中将十六进制转换为十进制