複数の式で構成されるラムダ式でも戻り値の型は省略できますよ

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