Nir*_*Nir 58 c++ boolean rvalue lvalue value-categories
#include <iostream>
int main() {
bool b = true;
std::cout << std::is_same<decltype(!(!b)), bool>::value << "\n";
auto bb = (!(!b));
std::cout << std::is_same<decltype(bb), bool>::value << "\n";
}
Run Code Online (Sandbox Code Playgroud)
上面的代码使用不同的编译器有不同的结果。这是编译器错误还是我遗漏了什么?
use*_*570 50
这是一个海湾合作委员会错误。问题在于 gcc 错误地将表达式视为!(!b)左值而不是右值。您可以在这里确认这一点。正如您将在上面链接的演示中看到的,gcc 给出的输出是lvalue而不是prvalue.
该错误已报告为:
| 归档时间: |
|
| 查看次数: |
2408 次 |
| 最近记录: |