Это ошибка gcc или как-то неправильное использование пакетов параметров?C++ variadic template, неправильная длина пакета параметров?
(Составлено с GCC 4.6.3 :)
#include <iostream>
template<class...Ts> struct tuple{};
template<class...>class test;
template< template <class...> class tp,
class...arg1Ts,
class...arg2Ts>
class test<tp<arg1Ts...>,tp<arg2Ts...>>{
public:
void test1(arg1Ts... arg1s,arg2Ts... arg2s){
std::cout<<sizeof...(arg1s); //Why is this 2? Why not 0?
std::cout<<sizeof...(arg2s); //2 ok
}
};
int main(){
test<tuple<>,tuple<char,int>> t1; //(arg1Ts... = empty), (arg2Ts... = char,int)
t1.test1('a',2); //prints 22, not 02
}
Вы пробовали использовать текущую версию gcc? Кстати. было бы полезно, если бы вы предоставили компилируемые примеры здесь. – PlasmaHH
'griwes @ Griwes-Linux: ~/tests $ g ++ - 4.7 2.cpp -o t2 -std = C++ 11; griwes @ Griwes-Linux: ~/tests $ ./t2; 02' - работает в g ++ 4.7. Я тестировал также с помощью g ++ 4.6 и печатал '22', как вы писали. Кажется, это ошибка, исправленная в новой версии. – Griwes
@PlasmaHH Я исправил код так, чтобы он компилировался, thx. – dunedain