私のコンパイラgcc-4.6によると、以下の例のfuncの呼び出しはあいまいです。あいまいな呼び出し(char *からlambdaとstd :: stringへの変換)
void func(const std::string &str) {
}
void func(std::function<std::string()> f) {
}
void test() {
func("Hello");
}
これでコンパイラは正しいですか?最初のオーバーロードを削除すると、関連するテンプレートをインスタンス化できないため、このコードはコンパイルされません。
2つの関数の名前を変更するか、明示的にstd :: stringに変換するかのどちらかを解決するにはどうしますか?
これはばかげているようですね! –
@トマラク:そうです。 – Puppy
私は実装がこれを行うことが許されているかどうかも分かりません。誰かがスペック参照を見つけたり、さらに説明したりすることができれば嬉しいです。 –