小编amo*_*sch的帖子

是否可以访问 C++ 模板模板常量参数?

我想做这样的事情:

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)

c++ templates class constants

5
推荐指数
1
解决办法
1321
查看次数

标签 统计

c++ ×1

class ×1

constants ×1

templates ×1