lambda の make_overload の話題

ここに書かれている Overloaded Lambdas ですが、Lingr で『clang だと動作するけど gcc だと動作しないんだよねー』と話題になっていんたんですが、Twitter でも話題になっていたみたいですね。


これは、gcc だと operator() の呼び出しが曖昧になってしまっているためエラーになります。
(clang だと問題ない。
この問題ですが規格的には gcc の方が正しい挙動みたいですね。。


ちなみにわたしも1年半ぐらい前に同じコードを書いていました。

これだと clang でも gcc でも問題ないですね。


それはそれとして、Overloaded Lambdas のコードのコンストラクタにある

overload(F... f) : F(f)... {}  

みたいなコードも書けるんですね。
C++14 で多相ラムダも書けるようになったし、もっと面白いことできそう。