Rya*_*ing 6 c++ constexpr c++11
考虑以下具有单个数据成员和结构的结构 operator==
struct S {
int a;
/*constexpr*/ bool operator==(const S& other) const {
return this->a == other.a;
}
};
Run Code Online (Sandbox Code Playgroud)
在使用中,可以像constexpr
初始化列表一样轻松创建两个结构
int main() {
constexpr S s1 = {1};
constexpr S s2 = {2};
constexpr bool b = s1 == s2; // error
return 0;
}
Run Code Online (Sandbox Code Playgroud)
bool比较无法编译,因为==
运算符未标记为constexpr
,如果是,程序编译.
是否所有类别的比较运算符都constexpr
可以标记为constexpr
?我没有看到任何理由,但我也没有看到代码练习这个.
我还会更进一步,询问是否operator*(S, S)
应该一直constexpr
这样.
任何可以是 constexpr 的类的所有比较运算符是否也应该标记为 constexpr?
我还会更进一步询问像operator*(S, S) 这样的东西是否也应该始终是constexpr。
如果您想编写很好用的代码,那么它们当然应该这样做。
我看不出有什么理由不这样做,但我也没有看到代码实践这一点。
要查看一个好的示例,请查看 std::pair 和 std::tuple 实现。但是,通常您不会编写可用作编译时值的类。
归档时间: |
|
查看次数: |
1126 次 |
最近记录: |