考慮一些代碼:如何使運營商有明確的參數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
}
我怎樣才能讓這個例子明確?
也許我失去了一些東西,但怎麼做'S =布爾()'匹配'運營商='了'void'版本?我假設'S = void()'和'S = bool()'你實際上是指更像'S s; s = foo;'和's s; s =吧;',對嗎? –
你可以讓這個[mcve]幷包含你得到的錯誤信息嗎? – NathanOliver
@RemyLebeau,它的確如此,因爲'std :: function'確實輸入了擦除 – WhiZTiM