我有getId()
模板函數,它可以像getId<SomeType>()
和getId< Some<NestedType>>()
一樣使用。我必須以某種方式區分它們。將模板參數區分爲嵌套模板
template<typename TRequest>
ParameterId getId() // #1
{
return tEParameterId_None;
}
template<template <class> class TRequest, class TType>
ParameterId getId() // #2
{
return TType::paramId;
}
template<TRequest<TType>>
ParameterId getId() // #3, not working
{
return TType::paramId;
}
ParameterId none = getId<SomeType>(); // #1 will be called
ParameterId still_none = getId<Some<NestedType>>(); // #1 will be called, but I want #3
ParameterId some_other = getId<SomeType, NestedType>(); // #2 will be called
我的問題是,我怎麼可以指定#3 getId()
模板功能,即getId< Some <NestedType> >()
調用究竟3D變形?或者哪個編譯時模板魔法可以區分嵌套模板?
因爲使用了像Some<NestedType>
這樣的整個代碼符號,並且我不想改變它並像getId< SomeType, NestedType >()
那樣調用 - 它會不一致。
謝謝你,就像我的一個魅力! – yudjin 2014-09-02 06:13:01