4
std :: functionがオーバーロードの解決に参加しないのはなぜですか?
次のコードはコンパイルできません。 void baz(int i) { } void baz() { } class Bar { std::function<void()> bazFn; public: Bar(std::function<void()> fun = baz) : bazFn(fun){} }; int main(int argc, char **argv) { Bar b; return 0; } ので、std::function私は読んでの通りですが、オーバーロードの解決を考慮することはないと述べ、この他のポスト。 この種のソリューションを強制した技術的な制限を完全には理解していません。 cppreference で翻訳のフェーズとテンプレートについて読みましたが、反例を見つけることができなかった理由は思いつきません。平凡な人(まだC ++の新人)に説明すると、何がどの翻訳段階で上記のコンパイルが失敗しますか?