Условная статика?

Рассмотрим следующий класс:

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

С std::conditional<Condition, const int, int>::type _var; Я могу выбрать, если _var является константным или неконстантным через параметр шаблона.

Как сделать эквивалент для статического / нестатического?

(Я прошу эквивалентный способ, какой бы метод метапрограммирования вы ни выбрали)

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

Это, как говорится, легкое переключение между статическим и нестатическим, вероятно, плохая идея ..

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]