考虑以下课程:
template<bool Condition> class MyClass
{
protected:
/* SOMETHING */ _var;
};
使用std::conditional<Condition, const int, int>::type _var;
我可以通过模板参数选择_var
是const还是非const。
如何做静态/非静态的等价物?
(我要求一个等效的,但你想要的元编程技术)
答案 0 :(得分:2)
您可能必须使用辅助结构,因为静态不是类型的一部分,而是存储说明符。例如:
template <class T, bool Static>
struct StaticSelector
{
T value;
};
template <class T>
struct StaticSelector<T, true>
{
static T value;
};
template<bool Condition> class MyClass
{
protected:
StaticSelector<float, Condition> _var;
};
话虽如此,在静态和非静态之间轻松切换可能是一个坏主意..