C++ C+;中常量表达式的模板int参数+;11
我有一个模板类:C++ C+;中常量表达式的模板int参数+;11,c++,templates,c++11,constexpr,C++,Templates,C++11,Constexpr,我有一个模板类: template <int N> class Object<N> { // ... } 我必须在C++11中完成它,但不幸的是不是在C++14中(其中std::max是constepr)。在C++11中可能吗?您可以使用三元运算符: template <int N1, int N2> Object<(N1 > N2)? N1 : N2> AddObjects(const Object<N1> & o
template <int N>
class Object<N>
{
// ...
}
我必须在C++11中完成它,但不幸的是不是在C++14中(其中
std::max
是constepr
)。在C++11中可能吗?您可以使用三元运算符:
template <int N1, int N2>
Object<(N1 > N2)? N1 : N2> AddObjects(const Object<N1> & object_1, const Object<N2> & object_2) {
// ...
}
模板
对象(N2)?N1:N2>添加对象(常量对象和对象_1,常量对象和对象_2){
// ...
}
Wow!从来没有想过这样的事情是可能的你仍然可以写你自己的constexpr
函数max
@Jarod42请,如果在c++11中不能使用,如果在constexpr函数中不能使用,如何写它?在c++11中,三元运算符似乎是必需的(我认为对于int
/uint
的无分支版本有一些黑客攻击),在c++14中,constexpr
规则允许if-else:-)
template <int N1, int N2>
Object<(N1 > N2)? N1 : N2> AddObjects(const Object<N1> & object_1, const Object<N2> & object_2) {
// ...
}