Шаблоны шаблонов с переменным числом переменных

В настоящее время я борюсь со следующим кодом, целью которого является реализация вариативных шаблонов вариативных шаблонов:

template
<
  template  class Head,
  template  class...
>
struct join, Head...>
{
  typedef Head result;
};

В идеале я мог бы чтобы использовать эту метафункцию шаблона для достижения следующего:

template  struct obj1 {};
template  struct obj2 {};

typedef join
<
  obj1, 
  obj1,
  obj1
>::result new_obj1;

typedef join
<
  obj2, 
  obj2,
  obj2
>::result new_obj2;

/* This should result in an error, because there are 
   different encapsulating objects
typedef join
<
  obj1, 
  obj1,
  obj2
>::result new_obj;
*/

Выходные данные выше должны создать new_obj1и new_obj2в форме template struct new_obj[1|2] {};

Я использую gcc 4.6.2 в Windows, который выводит «ожидаемый пакет параметров перед '...'» для расширения « Head... ".

Эта ошибка воспроизводится с gcc 4.5.1.

19
задан kmore 12 March 2012 в 06:30
поделиться