c++ - std::max() 和 std::min() 不是 constexpr

标签 c++ max c++11 min constexpr

我刚刚注意到新标准定义了 min(a,b)max(a,b) without constexpr .

25.4.7 中的示例,[alg.min.max]:

template<class T> const T& min(const T& a, const T& b);
template<class T> T min(initializer_list<T> t);

这不是很遗憾吗?我本来想写的

char data[ max(sizeof(A),sizeof(B)) ];

而不是

char data[ sizeof(A) > sizeof(B) ? sizeof(A) : sizeof(B) ];
char data[ MAX(sizeof(A),sizeof(B)) ]; // using a macro

那些不能是constexpr的任何原因?

最佳答案

std::min 和 std::max are constexpr在 C++14 中,这显然意味着(这些天)没有充分的理由不让它们 constexpr。问题解决了:-)

关于c++ - std::max() 和 std::min() 不是 constexpr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5605142/

相关文章:

java - ArrayList 可以包含比 int 的最大值更多的元素吗?

java - 如何创建获取 4 个数字并返回最大数字的 max 方法?

c++ - 为什么 DFS 在一棵树中较慢而在另一棵树中较快?

c++ - 使用模板时避免循环依赖问题

java - 如何从列表中收集多个最大值

c++ - 使用多维 std::initializer_list

c++ - 我可以重载采用指针和非构造模板对象的运算符吗?

c++11 列表 push_back() 实例错误?

c++ - shared_ptr 和切片

c++ - GTK+ gio 没有那个文件或目录