一个类可以在不实例化的情况下公开类型。例如:
class bar {
typedef int GET_TYPE;
};
template<class T>
void foo() {
typename T::GET_TYPE t;
// do something with t
}
foo<bar>();
整数可以以类似的方式暴露吗?从某种意义上说,模板参数可以是类型或内置类型。
一个类可以在不实例化的情况下公开类型。例如:
class bar {
typedef int GET_TYPE;
};
template<class T>
void foo() {
typename T::GET_TYPE t;
// do something with t
}
foo<bar>();
整数可以以类似的方式暴露吗?从某种意义上说,模板参数可以是类型或内置类型。
enum
对此有好处。
class bar
{
enum { MyNumericValue = 17, };
};
这仅适用于整数值,但适用于所有版本的 C++。
对于非整数值,请参阅CatPlusPlus 的现代解决方案(仅限 C++11)。
是的,使用静态数据成员。
struct foo {
static constexpr int something = 42;
};
// ... use foo::something ...