Pół godziny temu odkryłem parametry szablonu variadic i teraz jestem całkowicie uzależniony.C++ varadic szablon terminacja klasy
Mam abstrakcję opartą na klasie statycznej dla szpilki wyjściowej mikrokontrolera. Chcę zgrupować pewną liczbę pinów wyjściowych, aby obsłużyć je jako jeden pin. Poniższy kod działa, ale myślę, że powinienem być w stanie zakończyć rekursji na 0 parametrów zamiast na 1.
template< typename pin, typename... tail_args >
class tee {
public:
typedef tee<tail_args...> tail;
static void set(bool b){
pin::set(b);
tail::set(b);
}
};
template< typename pin >
class tee<pin> {
public:
static void set(bool b){
pin::set(b);
}
};
próbowałem tego, ale kompilator (gcc) wydaje się nie brać go pod uwagę:
template<>
class tee<> : public pin_output {
public:
static void set(bool b){}
};
Komunikat o błędzie jest długi, ale zasadniczo mówi, że nie ma tee <>. Czy jest coś nie tak z moim tee <> czy nie jest to możliwe, aby zakończyć rekursji
Jaka wersja GCC używasz? Czy jest to GCC 4.8 i czy przekazałeś flagę '-std = C++ 11' (również z' -Wall')? –
Twój typ powinien być 'szablon klasa tee', a twój przypadek zakończenia powinien być' szablon <> klasa tee <> {}; '. –
@Basile: 4.7.2; Użyłem -std = C++ 0x; using -std = C++ 11 -Wall nie zmienia; –