Слишком общий вопрос. Более того, в заголовке одно спрашивается, а в описании - уже совсем другое, с первым имеющее мало связи.
С настолько общими и дискуссионными вопросами тебе надо не на тостер, а на gamedev.ru.
Никаких проблем использовать следующий подход, в рамках приведенного кода, не вижу: "QueueList< listStruct< char* > > list".
Если код надо собирать gcc/clang, то пробелы между вложениями "<" и ">" крайне желательны. Иначе компилятор может воспринять запись ">>" в конце инстанцирования шаблона как символ побитового сдвига.
Иное дело если параметр шаблона "listStruct" используется в "QueueList". В общем, делай уточнения, сейчас вопрос на вопрос не тянет.
С настолько общими и дискуссионными вопросами тебе надо не на тостер, а на gamedev.ru.