は、いくつかのコードを検討していますは、オペレータを作る方法を明示的にパラメータC++
void foo() { }
bool bar() { return true; }
struct S
{
void operator=(std::function<void()> f){f();};
void operator=(std::function<bool()> f){f();};
};
int main() {
S s;
s = foo; // ok
s = bar; // error: use of overloaded operator '=' is ambiguous
}
私はこの例を明確にできますか?そうstd::function<void()>
とstd::function<bool()>
両方がbool(*)()
から構築することができる -
が、どのように 'Sの=ブール値は、()' '演算子='の 'void'バージョンと一致していますか?そして、私は 'S = void()'と 'S = bool()'と仮定します。 s = foo; 'と' S s; s = bar; '、そう? –
これを[mcve]にして、取得しているエラーメッセージを含めることはできますか? – NathanOliver
@RemyLebeau、それは 'std :: function'がタイプ消去を行うためです – WhiZTiM