假设我有一个简单的模板类:返回值为模板参数的类模板从函数
template <typename ElementType, ElementType Element>
class ConsecutiveMatcher
{
public:
bool operator() (ElementType lhs, ElementType rhs)
{
return lhs == Element && rhs == Element;
}
};
我通常会做实例比ConsecutiveMatcher<wchar_t, L'\\'>()
简单的通过提供可以推断基于该模板参数类型的函数参数类型:
template <typename ElementType>
ConsecutiveMatcher<ElementType, Element /* ?? */>
MakeConsMatcher(ElementType Element)
{
return ConsecutiveMatcher<ElementType, Element>();
}
然而,在这种情况下,MakeConsMatcher(L'\\')
将无法正常工作,因为函数需要返回一个类,其模板不仅包含类型,也是一种价值。
如何从一个函数中返回一个类模板,该函数不仅具有类型模板参数,还有值模板参数?
模板是编译时的野兽。如果你在运行时使用各种'Element'值,你可以让'Element'成为一个构造参数吗? – Drop
静态类型在我的用例中是可以的,我只是寻找一种方法来省略'wchar_t'并在实例化过程中使用自动类型推导。我想这是不可能的。 –