条件静态?

时间:2012-09-26 16:44:16

标签: c++ templates c++11 template-meta-programming typetraits

考虑以下课程:

template<bool Condition> class MyClass
{
    protected:
        /* SOMETHING */ _var;
};

使用std::conditional<Condition, const int, int>::type _var;我可以通过模板参数选择_var是const还是非const。

如何做静态/非静态的等价物?

(我要求一个等效的,但你想要的元编程技术)

1 个答案:

答案 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;
};

话虽如此,在静态和非静态之间轻松切换可能是一个坏主意..