首页 > 解决方案 > 为什么这个模板不编译?

问题描述

我想知道为什么如果我将模板变量分配给它编译的标识符/变量,但是如果我只是尝试访问类的内部静态变量,它就无法编译:

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;

但是当我这样写时,我无法理解为什么编译器会抱怨。

标签: c++templates

解决方案


推荐阅读