любой альтернативный вывод для вывода аргумента шаблона класса?
У меня есть шаблон класса:
template <typename T, std::size_t N>
class iterator
{
explicit iterator(T*);
};
Я попытался использовать функцию С++17.
Class template argument deduction (CTAD)
вывести , но я не могу этого сделать, так как нет способа вывести, а указание средств CTAD все равно не будет предпринято. Поэтому я пошел по старинке:
template <std::size_t N, typename T>
auto make_iterator(T* const p)
{
return iterator<T, N>(p);
}
Это позволяет мне предоставлять только
N
а также
T
выводится. Есть ли функция С++20 (и выше), которую я упустил из виду, которая позволила бы мне обойтись без этой функции? Я пробовал это:
template <std::size_t N, typename T>
iterator(T*) -> iterator<T, N>;
Но это не работает, так как:
Вывод аргумента шаблона класса выполняется только в том случае, если список аргументов шаблона отсутствует. Если указан список аргументов шаблона, вывод не выполняется.