2

次のクラスを検討してください。

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

を使用すると、テンプレート パラメーターを使用して、定数か非定数かstd::conditional<Condition, const int, int>::type _var;を選択できます。_var

static/non static に相当する方法は?

(あなたが望むどんなメタプログラミング技術でも同等のものを求めます)

4

1 に答える 1

2

staticは型の一部ではなく、ストレージ指定子であるため、おそらくヘルパー構造体を使用してこれを行う必要があります。例えば:

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

そうは言っても、静的と非静的を簡単に切り替えることはおそらく悪い考えです。

于 2012-09-26T17:01:52.310 に答える