любой альтернативный вывод для вывода аргумента шаблона класса?

У меня есть шаблон класса:

      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>;

Но это не работает, так как:

Вывод аргумента шаблона класса выполняется только в том случае, если список аргументов шаблона отсутствует. Если указан список аргументов шаблона, вывод не выполняется.

0 ответов

Другие вопросы по тегам