我想做这样的事情:
template<template<int d, class>
class container,
int dim = d, typename content_data_type>
class MyClass {
};
Run Code Online (Sandbox Code Playgroud)
我的编译器告诉我这是不可能的,因为“d”不是在以下范围之外定义的:
template<int d, class> class container
Run Code Online (Sandbox Code Playgroud)
也许还有另一种方法可以做到这一点吗?
预先感谢您对此主题的任何帮助。
更新:
@ Rook:我想稍后在专业化中访问“dim”和“content_data_type”参数
例如
普通班:
template<template<int d, class>
class container>
class MyClass {
};
Run Code Online (Sandbox Code Playgroud)
规格 班级:
template<>
class MyClass<vec> {
vec c; // Error: vec needs template parameters
};
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误,因为我使用了我的模板类“vec”而没有模板参数,我希望编译器推断出模板参数,例如当我使用
MyClass<vec<3, float> >
Run Code Online (Sandbox Code Playgroud)
那么变量“c”应该具有类型
vec<3, float>
Run Code Online (Sandbox Code Playgroud)
因为这不起作用,我想我可以创建两个显式模板参数“dim”和“content_data_type”,我可以在专业化类中访问它们,如下所示:
template<template<int d, class t>
class container,
int dim = d, typename content_data_type = t>
class MyClass<vec> {
vec<dim, content_data_type> …Run Code Online (Sandbox Code Playgroud)