C++ 依赖于构造函数的类模板参数
使用模板编号包装结构:C++ 依赖于构造函数的类模板参数,c++,templates,constructor,C++,Templates,Constructor,使用模板编号包装结构: template <int I> struct Num { static const int n = I; }; 但是,我真正希望的是,对于Zod结构,将第二个整数模板参数初始化为mi设置的值 template <typename T, int I = ?> struct Zod { ... } 问题是构造函数的x参数在Zod的模板声明范围内不可用。可以这样做吗?这是完全可能的-只需传入*((T*)nullptr)即可获得任意类型T的左值,而不
template <int I> struct Num { static const int n = I; };
但是,我真正希望的是,对于Zod
结构,将第二个整数模板参数初始化为mi
设置的值
template <typename T, int I = ?>
struct Zod { ... }
问题是构造函数的
x
参数在Zod
的模板声明范围内不可用。可以这样做吗?这是完全可能的-只需传入*((T*)nullptr)
即可获得任意类型T的左值,而不管其可构造性如何。毕竟,您实际上对构造函数参数所做的只是将其传递给id
,然后传递给decltype
,这在模板中是完全可行的,因为您知道x
的类型是T
template<typename T, int I = identity<decltype(id(*((T*)nullptr)))>::type::n> struct Zod {
...
};
模板结构Zod{
...
};
我想制作mui
静态常量不是一个选项?出于好奇,你想实现什么?啊!我一直在试图构造一个问题,需要按照我概述的方式使用一个值。很可能它不存在。
template <typename T, int I = ?>
struct Zod { ... }
char c;
static const int g = identity<decltype(id(c))>::type::n;
template<typename T, int I = identity<decltype(id(*((T*)nullptr)))>::type::n> struct Zod {
...
};