Я использую gcc 4.4 в Debian squeeze. Рассмотрим следующий код.
#include
Итак, идея заключается в том, что T
соответствует строке
, C
соответствует карте
, а пакет параметров шаблона Args
соответствует int
. Возможно, у меня неправильный синтаксис, исправьте, если это так. В частности, если нужно, чтобы первый аргумент шаблона в классе C
совпадал с T
, а остальные - с пакетом параметров шаблона Args
, это шаблон
правильный синтаксис?
Это дает ошибку
In function 'int main()':
post.cc:18: error: no matching function for call to 'foo()'
Это похоже на вопрос Вариативные шаблоны шаблонов и идеальная пересылка .Этот вопрос предполагает, что это ошибка gcc, но, возможно, я ошибаюсь, полагая, что эти вопросы касаются одного и того же.
Пожалуйста, будьте осторожны. Мои знания о вариативных шаблонах менее 12 часов; Я просто пытался переписать старый код на C ++, чтобы уменьшить дублирование. Кроме того, я давно не занимался C ++. Если есть обходной путь, дайте мне знать. Спасибо.
РЕДАКТИРОВАТЬ: обходной путь, предложенный в комментариях к шаблонам шаблонов Variadic и идеальной пересылке по Исэ Глицинии , работал у меня, что говорит о том, что это та же ошибка. Конечно я сейчас (а) интересно, насколько хрупок этот обходной путь; (б) почему он работает, и что побудило Исэ подумать об этом. Хотя я думаю, что только Исэ может ответить на последний вопрос. : -)