假设我有一个简单的模板类:
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'\\')
将不起作用,因为该函数需要返回一个类,其模板不仅包含类型,还包含值。
如何从不仅具有类型模板参数而且还具有值模板参数的函数返回类模板?