diesen Code-Schnipsel vor:(Default) konstruiert ein Objekt für jeden variadische Typen
void Foo(std::string str1, std::string str2) {}
template<typename... Types>
void Bar()
{
Foo(Types{}...); // wont compile
}
Bar<std::string, std::string>();
Was will ich hier zu tun ist, auf dem Standard zwei std::string
Objekte innerhalb der Bar
Methode zu konstruieren und sie Foo
passieren. Allerdings werden meine vergeblichen Versuche (einer von ihnen ist im Schnipsel) nicht kompiliert, also frage ich mich, ob das überhaupt möglich ist.
Ich kompiliert mit VC 2013, die Compilerfehler bei mir wirft. Wie in den Kommentaren erwähnt, können andere Compiler damit umgehen. Kann jemand sagen, ob das obige Snippet standardkonform ist?
[Works für mich ...] (http://coliru.stacked-crooked.com/a/d4fac91bb71f75f3) – 0x499602D2
@ 0x499602D2 Interessant, versuchte Ihren Code mit VC 2013 und dort schlägt es fehl (wie von mir zuvor beobachtet) , könnte ein Compiler-Bug sein, dann – Paranaix
funktioniert auf clang 3.5 auch, was ist dein Compiler und Version? – galop1n