http://twitter.com/melponn/status/20098144864
そんな制限はないですが
#include <iostream> int main() { std::cout << std::boolalpha << ([] { if (true) return true; return false; })() << std::endl; // OK }
異なる型の値を返してる場合は、推論できないのでダメですね。
(条件演算子なら左側の式の型に変換してくれますが)
#include <iostream> int main() { std::cout << std::boolalpha << ([] { bool b = true; if (b) return 3; return b; })() << std::endl; // エラー! }
main.cpp: In lambda function: main.cpp:5:78: error: inconsistent types 'bool' and 'int' deduced for lambda return type