Это больше не соответствует действительности в новом стандарте C ++ 11, но современные компиляторы еще не полностью его реализовали.
Локальный тип не может быть параметром шаблона. Переместите определение структуры выше main
, и все будет работать.
Или обновите ваш компилятор до того, который поддерживает эту часть C ++ 11.
Вот ограничение из C ++ 03, раздел 14.3.1 ([temp.arg.type]
), которое удалено в C ++ 11:
Локальный тип, тип без связи, безымянный тип или тип, составленный из любого из этих типов, не должны использоваться в качестве аргумента шаблона для шаблона параметра типа .