c++ - 有条件静态?

标签 c++ templates c++11 template-meta-programming type-traits

考虑下面的类:

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

带有std::conditional<Condition, const int, int>::type _var;我可以选择是否 _var通过模板参数是 const 或非常量。

如何对静态/非静态进行等效操作?

(无论你想要什么元编程技术,我都要求一个等效的)

最佳答案

您可能必须使用辅助结构来完成此操作,因为 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;
};

话虽这么说,在静态和非静态之间轻松切换可能不是一个好主意。

关于c++ - 有条件静态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12606534/

相关文章:

c++ - 非指针成员变量的虚析构函数

c++ - 删除未使用的重载会导致编译错误?

c++ - 构造函数定义 C++ 语法

python - Boost.Python 返回不可复制对象的列表

C++ 访问 vector 超出 size() 和低于 capacity()

c++ - 可变参数构造函数优先于用户提供的 move 构造函数,默认情况下除外

C++ 模板特化 char* 和 Valgrind

c++ - 在 C++ 中什么时候应该使用函数而不是仿函数?

java - 为什么处理排序数组比处理未排序数组更快?

C++ 程序在调用函数时挂起