2014-10-03 4 views
0

내 수업은 지금까지와 비슷합니다.상수가있는 템플릿 템플릿 인수

template< template<int dim, class T> class search_space> class abstract_search_algorithm { 

private: 
    class search_space<dim, class T> & ssp; //error: dim not declared in scope 

//public: 
// abstract_search_algorithm(search_space<int dim, T>& ss) : ssp(ss) { } 

// virtual std::array<T, dim> execute() = 0; 
// virtual ~abstract_search_algorithm() { } 

}; 

위에서 알 수 있듯이 search_algorithm의 인수는 템플릿이 적용된 클래스입니다. 이제, 나는 그 클래스에 대한 참조를 agorithm 클래스에 저장 하겠지만, 올바른 타입은 무엇입니까?

+0

그 인수에서 온해야 * 어딘가 * 템플릿 템플릿을 사용하여 구체화되기 전에. 현재 당신은 단순히 그들을 제공하지 않습니다. 템플릿 템플릿을 선언한다는 것은 템플릿 인자로'int'와 임의의 클래스'T'를 취하는 템플릿을 제공한다는 것을 의미합니다. 좋아요,하지만 템플릿 템플릿은 그것들이 없으면 많은 것을하지 않습니다 (사실은 없습니다). – WhozCraig

답변

0

당신이 할 수

template <typename T> class abstract_search_algorithm; 

그리고 전문화 :

template<template<int, class> class search_space, int dim, typename T> 
class abstract_search_algorithm<search_space<dim, T>> { 
    // Your implementation. 
};