Я пытаюсь создать экземпляр шаблонного шаблона на основе типа шаблона другого класса. Но я получаю следующую ошибку.Как объявить класс по типу другого класса
error: template argument 1 is invalid
Вот минимальный пример для воспроизведения ошибки
template <typename IdType>
class GraphNode
{
IdType id;
};
template <typename IdType>
class Graph
{
public:
using NodeType = IdType;
GraphNode<IdType> nodes[100];
};
template <typename IdType>
class ProcessGraph
{
//some functions
};
template <typename IdType>
auto create_graph()
{
Graph<IdType> graph;
// populate graph here
return graph;
}
int main(int argc, char *argv[])
{
if(atoi(argv[1]))
const auto &graph = create_graph<int>();
else
const auto &graph = create_graph<unsigned long>();
auto processor = ProcessGraph<typename graph.NodeType>(); // The error occurs here
return 0;
}
Спасибо за помощь
Спасибо. Проблема 1 была создана при создании минимального примера. Я думаю, что ошибка была со вторым пунктом – knightrider
@TartanLlama: хорошая точка, обновляющая ответ –