Nun muss ich nach langer Zeit auch mal wieder einen Thread erstellen, weil mir Google nicht mehr weiterhelfen kann.
Ich verzweifle an Folgendem Vorhaben:
Der Compiler verweigert seinen Dienst mit:
Build output:
Was übersehe ich?
Ich verzweifle an Folgendem Vorhaben:
Code:
#include <Windows.h>
#include <string>
#include <iostream>
using namespace std;
typedef std::function<void ()> func;
struct testclass
{
std::function<func ()> member;
operator func()
{
return member();
}
func get()
{
return member();
}
};
int main()
{
func f = []() { cout << "test"; };
testclass obj;
obj.member = [&]() { return f; };
func test = obj; //<- causes error
test = (std::function<void ()>)obj; //<- causes error
test = obj.get(); //<-works
test = obj.operator func(); //<- works
test();
return 0;
}
Wie man sehen kann: Der explizite Aufruf des Operators oder von get() funktioniert. Implizit verursacht es oben genannten völlig unverständlichen Fehler.Quote:
Fehler 1 error C2064: Ausdruck ergibt keine Funktion, die 0 Argumente übernimmt c:\program files\microsoft visual studio 11.0\vc\include\xrefwrap 431 1 CSharpAttributes
Build output:
Was übersehe ich?