无意中发现了以下代码:
if (bool result = f()) {
// Do the stuff
}
Run Code Online (Sandbox Code Playgroud)
它是用gcc 4.9.2和编译的MSVS 2013.
以下代码编译并打印False!:
#include <iostream>
bool foo() {
return false;
}
void bar() {
if (bool result = foo()) {
std::cout << "True!\n";
} else {
std::cout << "False!\n";
}
}
int main()
{
bar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我认为这个(语法除外)功能只有C++17.
我明白错了吗?
Rak*_*111 14
我明白错了吗?
杰普.始终允许在if语句的条件下声明.C++ 17的新功能是你可以有一个初始化器和条件:
if (int A = 0; ++A == 1);
// ^^^^^^^^^
// new part
Run Code Online (Sandbox Code Playgroud)
对于那些问为什么这是一个有用功能的人来说,这是我喜欢Reddit的一个例子:
std::map<int, std::string> Map;
// ...
if (auto[it, inserted] = Map.insert(std::pair(10, "10")); inserted)
; // do something with *it.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |