我有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