C++模板模板参数中未声明的标识符
C++ Undeclared Identifier in Template Template Parameter
>我有一个C++类
,模板化如下:template <typename Operator>
class MyClass;
其中运算符也可以模板化为:
template <typename Param1, typename Param2, typename Param3>
class MyOperator;
现在,当我尝试为类MyClass编写模板化方法时,我收到一个错误 - 以下代码:
template < template < typename Param1, typename Param2, typename Param3 > typename Operator >
void MyClass<Operator<Param1, Param2, Param3>>::FunctionName()
为参数 1、参数2、参数 3和运算符中的每一个生成错误:"未声明的标识符"。为什么会这样,因为类型名/类是在上面指定的?
我知道示例代码没有多大意义,但我的最终目标是部分地将其专门化为如下所示:
template < template < typename Param1, typename Param2, typename Param3 > typename Operator >
void MyClass<Operator<Param1, "CustomParam", Param3>>::FunctionName()
因此,如果第二个参数是"CustomParam",则该函数将执行特定的实现。即使我将所有参数指定为模板参数(因为我要专用的参数是第二个参数,但第一个不是专用的(,这是否可行?谢谢!
模板模板参数中的参数名称仅提供信息(作为函数指针void (*f)(int a, int b)
中的参数名称(不能使用a
和b
((,您应该执行以下操作:
template <template <typename, typename, typename> typename Operator,
typename Param1, typename Param2, typename Param3>
void MyClass<Operator<Param1, Param2, Param3>>::FunctionName() {/*...*/}
请注意,您不能部分专用化方法/函数,您必须部分专用化整个类。
相关文章:
- #ifdef和未声明的标识符
- 未声明的标识符编译暗黑破坏神 2 程序"muleview"
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- Google protobuf 时间戳未声明标识符,在 Windows 上具有C++
- 使用未声明的标识符"sqrt"?
- 对类 (C++) 中的私有变量使用未声明的标识符
- 我的代码中有错误,未声明的标识符
- 未定义的标识符/未声明
- 错误:在 C++ 'std'使用未声明的标识符
- 在编译器之前检测未声明的标识符
- 使用未声明的标识符'temp'
- 使用未声明的标识符"yylex"和"yyin"?
- 使用"class"关键字,后跟未声明的标识符
- 未声明的标识符错误,但变量定义正确 (?)
- C2065 'cout':未声明的标识符
- C++模板模板参数中未声明的标识符
- 错误:在 C++ 目标 c 混合'self'使用未声明的标识符
- C++循环依赖关系,未声明的标识符
- 我的函数调用 (C++) 中的未声明标识符
- 未找到标识符和未声明的标识符