Visual C++ 2013 CTPのオーバーロード解決がバグっている
これで3~4時間詰まった… 以下のコードがコンパイルエラーになる
#include <initializer_list> void f(int) {} void f(std::initializer_list<int>) {} int main() { f({10}); } /* 1> prog.cpp 1>prog.cpp(7): error C2668: 'f' : ambiguous call to overloaded function 1> prog.cpp(4): could be 'void f(std::initializer_list<int>)' 1> prog.cpp(3): or 'void f(int)' 1> while trying to match the argument list '(initializer-list)' ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== */
恐らくUniform initializationとinitializer listが曖昧になっていると思われる。
gccやclangは4.7.3や3.0の頃から問題なくビルドできる。
以下愚痴
Visual C++にもいいところがあるはずという、超ポジティブ思考で使っていたが、
使えば使うほど実装の劣り、容易に発生するICE、こういったバグなど、萎える事象が次々に起こるので辛いです…