ein*_*ica 6 comparison constexpr c++11 stdarray
想要在编译时进行比较是很自然的std::array ; 它operator==()显然是constexpr'能够的.然而 - 它没有标记constexpr.这是故意还是疏忽?而且 - 它是什么原因留下来的(显然也是在C++ 17中)?
P0031解释了为什么它没有提出constexpr比较:
当前比较和
swap/fill或可以借助来自<algorithm>头部的算法来实现.标记与constexpr的比较将破坏该能力,并可能导致性能下降.
例如,==可以实现,std::equal在适当的情况下,可以调用高度优化但非确定性constexpr memcmp.制作constexpr用于==将排除这种优化,无需特殊的编译器的帮助.
| 归档时间: |
|
| 查看次数: |
315 次 |
| 最近记录: |