Предположим, у меня есть простой класс шаблона:Возвращает шаблон класса с аргументами шаблона значения из функции
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' и использовать автоматический вывод типа во время создания экземпляра. Думаю, это просто невозможно. –