C ++ 11中常量表达式的Template int参数

时间:2016-04-18 13:26:03

标签: c++ templates c++11 constexpr

我有一个模板类:

template <int N>
class Object<N>
{
// ...
}

例如,我想创建一个在内部添加内容的函数,并返回将int N参数设置为最大值的类:

template <int N1, int N2>
Object<std::max(N1, N2)> AddObjects(const Object<N1> & object_1, const Object<N2> & object_2)
{
    // ...
}

我必须在C ++ 11中这样做,但遗憾的是不是C ++ 14(其中std::maxconstexpr)。是否可以在C ++ 11中使用?

1 个答案:

答案 0 :(得分:4)

您可以改为使用三元运算符:

 template <int N1, int N2>
 Object<(N1 > N2)? N1 : N2> AddObjects(const Object<N1> & object_1, const Object<N2> & object_2) {
        // ...
 }