2016-11-04 1 views
0

Compiler: TDM-GCC 5.1.0 (SJLJ Unwinding)nicht passieren kann Variable Args zu Nested Variadische Template Anruf

Ich bin ein Problem mit innerhalb von einem variablen Anzahl von Typ Argumenten zu einem statischen variadische Vorlage Methodenaufruf vorbei Vorlagenfunktion. Ich habe jede Syntaxvariation ausprobiert, aber es wird nicht kompiliert, also kann ich nur annehmen, dass ich das falsch mache.

Hier ist das Setup:

#include <iostream> 

template <class T> 
struct Foo 
{ 
    template <class...> 
    static void test() 
    { 
     std::cout << "Foo<T>::test<...>() called."; 
    } 
}; 


template <class T, class... Args> 
void bar() 
{ 
    Foo<T>::test<Args...>(); //error happens here 
} 

int main() 
{ 
    bar<int, int>(); 
} 

Dies gibt dem Compiler-Fehler: expected primary-expression before '...' token.

Ich dachte, Pack Expansionen sah aus wie Args..., aber das scheint hier nicht zu funktionieren.

Jede Hilfe wird geschätzt.

+2

Sie wahrscheinlich diese Frage informativ finden: [ "Wo und warum habe ich die' Vorlage setzen 'und' typename' Schlüsselwörter? "] (https://stackoverflow.com/questions/610245/where-and-why-do-i-have-to-put-the-template-and-typename-keywords) – WhozCraig

Antwort

1

Sie müssen den Parser sagen, dass abhängige test ist eine Vorlage:

template <class T, class... Args> 
void bar() 
{ 
    Foo<T>::template test<Args...>(); //error happens here 
      ^^^^^^^^^ 
} 

demo

Verwandte Themen