Ich habe eine überladene Funktion, die ich in einer std :: -Funktion übergeben möchte. GCC4.6 findet keine "Matching-Funktion". Während ich hier einige Fragen fand, sind die Antworten nicht so klar, wie ich sie gerne hätte. Könnte mir jemand sagen, warum der folgende Code die korrekte Überladung nicht abziehen kann und wie man (elegant) damit umgehen kann?
%Vor%Das ist mehrdeutige Situation.
Um es zu disambiguieren, verwenden Sie explizite Umwandlung als:
%Vor%Nun wäre der Compiler in der Lage, die Situation basierend auf dem Typ in der Besetzung zu disambiguieren.
Oder Sie können dies tun:
%Vor% Warum funktioniert std::function<int(const std::string&)>
nicht so, wie funtype fun = test
oben funktioniert?
Nun, die Antwort ist, weil std::function
mit jedem Objekt initialisiert werden kann, da sein Konstruktor templated ist, was unabhängig von dem Template-Argument ist, das Sie an std::function
übergeben haben.
Tags und Links c++ c++11 overloading