c++ - 为什么这个模板不编译?
问题描述
我想知道为什么如果我将模板变量分配给它编译的标识符/变量,但是如果我只是尝试访问类的内部静态变量,它就无法编译:
template <typename component_category_t>
struct GetComponentTypeID
{
static inline int count = 0;
template <typename component_t>
static inline int ID = count++;
};
int i = GetComponentTypeID<int>::ID<float>; // Works
GetComponentTypeID<int>::ID<float>; // Fails
//GetComponenIDType<int>::ID<float> is not a static member
//expected a declaration
//expected an identifier
//GetComponentIDType is not a template
我正在尝试建立一个系统:
classname<int>::ID<float> == 0;
classname<int>::ID<char> == 1;
classname<int>::ID<double> == 2;
classname<char>::ID<double> == 0;
但是当我这样写时,我无法理解为什么编译器会抱怨。
解决方案
推荐阅读
- bash - 在从 bash 中读取文件时循环运行 curl commads
- api - 服务器端上的 Nuxt.js api resquest 返回错误 net::ERR_NAME_NOT_RESOLVED
- c - 为什么我的计算器在乘法和除法时总是给我0,而加法和减法工作正常?
- python - Matplotlib 可视化总是崩溃
- python - 我怎样才能用漂亮的汤从这个网页上刮下这个符号?
- laravel - 如何在 laravel 控制器上触发 http url
- c++ - 如何将字符串文字转换为同名变量的值?
- google-sheets - 使用条件格式根据特定文本为整个单元格着色
- ios - iOS 14 - 需要以编程方式隐藏新的日期选择器小部件
- java - 将 sql 时间戳转换为 java OffsetDateTime