Variadic templates kombiniert mit std::function

Cromon

Erfahrenes Mitglied
Hallo zusammen

Ich sitze hier gerade vor einem merkwürdigen Problem. Ich habe folgende Funktion:
C++:
	template<typename... Args>
	void defConstructor() {
		std::function<void (Args...)> fun;
	}

Dies wird nun wie folgt verwendet:
C++:
	auto fooClass = std::make_shared<Class<Foo>>("Foo");
	fooClass->defConstructor<std::string>();

Dieser Code compiliert nicht mit error C2061: syntax error : identifier 'basic_string<char,std::char_traits<char>,std::allocator<char> >'. Ändert man jedoch die obige Funktion auf:
C++:
	template<typename... Args>
	void defConstructor() {
		using namespace std;
		std::function<void (Args...)> fun;
	}

so gibt es keine Fehler mehr.

Dies macht jedoch meiner Meinung nach keinen Sinn, da Templateparameter gemäss meine Verständnis inklusive ihrem Namespace übergeben werden sollten.

Kann sich jemand von euch vorstellen woran das liegt?

Viele Grüsse
Cromon
 
Zurück