템플릿을 매개 변수 유형에 부분적으로 바인딩하는 방법이 있습니까? 예를 들어, 나는 다음과 같은 템플릿이 있습니다부분 템플릿 바인딩, 형식으로 새 템플릿을 만듭니다.
template<typename T, typename Q> struct generic { };
을 그리고 나는 첫 번째 유형으로의 인스턴스를 만들 수 있기를 기대하고, 매개 변수로 템플릿 클래스 소요 다른 템플릿이 있습니다
template<typename T, template<typename> class Impl>
struct wrapper {
Impl<T> foo;
};
변경하지 않고 template<typename T>
과 같은 간단한 템플릿을 사용할 수 있습니다. 이제는 만을 지정하고 wrapper
에 전달하여 generic
템플릿을 부분적으로 바인딩하고 싶습니다. 이 같은 몇 가지 구문을 만드는, 아마도 뭔가 :
template<typename T> bound : public generic<T,some_type> { };
나는 그것이 생성자에 문제가 발생로하지만이를 방지 할 수 있지만 바라고 :
template<typename T> bound = generic<T,some_type>;
나는 거의 내가 상속을 사용하여 원하는 것을 얻을 수있어 그리고 기본 클래스에서 정의 된 연산자. C++ 11에서
' 템플릿을 사용하면 bound = generic ; 일명 "template-typedef"? –
@BartekBanachewicz, 잘 생겼어 ... 아직 지원하지 않는 GCC 4.6부터 테스트 할 수는 없다. 아마도이 작업을 수행하는 이전 기능이 없다는 뜻입니다. –
이 기능은 * Template Aliases *로도 알려져 있으며 [이 차트] (http://gcc.gnu.org/projects/cxx0x.html)에 따르면 '4.7' 이후 실제로 지원됩니다. –