c++ - 是否可以根据模板参数的常量性有条件地启用模板类的非 const/const 数据成员?

标签 c++ templates c++11

是否可以根据模板参数的常量性有条件地启用模板类的非 const/const 数据成员?或者可能有一些条件类型定义?我考虑过将 std::enable_if 与 std::is_const 一起使用,但没有我可以使用的 std::is_not_const。

class A;

template <typename T>
class Test
{
    A& m_a; // If T != const.
    const A& m_a; // If T == const.
};

请注意总是 T != A。

最佳答案

是的,您可以使用 std::conditional :

template <typename T>
class Test
{
    typename
    std::conditional<std::is_const<T>::value, const A&, A&>::type
    m_a;
};

关于c++ - 是否可以根据模板参数的常量性有条件地启用模板类的非 const/const 数据成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22946398/

相关文章:

C++ 相当于 JS .charCodeAt()

c++ - 加入特定的 boost 线程

c++ - 模板类可选地插入初始值作为模板参数

c++ - 在 GYP 项目中使用 c++11

ubuntu - stream_descriptor 的 boost::asio::async_read() 现在返回 EOF

c++ - 带有嵌套大括号括起来的初始值设定项的类

c++ - 在 OpenCV 应用程序中,如何确定内存泄漏的来源并修复它?

templates - Jekyll 中的画廊通过 YAML header 列表

javascript - 'into' 警告从多个 this.render() 抛入 Ember.js

c++ - std::async 不并行化任务