このコードはどうしてコンパイルされるのですか???
#include <iostream>
int main() {
auto lambda1 = []{};
auto lambda2 = []{};
if(lambda1 && lambda2) {
std::cout << "BOOLEAN LAMBDAS!!!" << std::endl;
}
if(lambda1 || lambda2) {
std::cout << "BOOLEAN LAMBDAS AGAIN FTW!!!" << std::endl;
}
bool b1 = lambda1;
bool b2 = lambda2;
std::cout << b1 << ", " << b2 << std::endl;
}
ブールラムダ!(またはブーラムダス、できれば... *避けます*)
なぜこれが機能するのですか?これは別の GCC バグですか? そうでない場合、これは標準ですか?