我尝试基于this answer为std::min
和std::max
函数创建别名,但如果尝试以下代码:
#include <algorithm>
namespace math
{
template< typename T >
constexpr auto Max = std::max< T >;
}
如果我运行下面的代码
constexpr int a = 2;
constexpr int b = 3;
constexpr int max = math::Max( a, b );
我得到这个错误:
错误C3245:'数学::最大值':使用变量模板需要模板参数列表
在现代C++中,正确执行此操作的最佳方法是什么?
2条答案
按热度按时间cunj1qz11#
也许这种前沿的现代、守法的、尊重名称空间的、参数转发函数的别名构造可以为您工作。
oaxa6hgo2#
一种可能的解决方案是引入函数对象:
那你就可以