рассмотрим код:как сделать оператор имеет явный параметр 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 = BOOL()' соответствует 'void' версию' 'оператор =? И я предполагаю, что 'S = void()' и 'S = bool()' на самом деле означает нечто большее, чем 'S s; s = foo; 'и' S s; s = bar; ', правильно? –
Можете ли вы сделать это [mcve] и включить сообщение об ошибке, которое вы получаете? – NathanOliver
@RemyLebeau, это так, потому что 'std :: function' типа type erasure – WhiZTiM