类模板参数推导的任何替代推导?

问题描述

我有一个类模板:

template <typename T,std::size_t N>
class iterator
{
  explicit iterator(T*);
};

我尝试使用 c++17 特性 Class template argument deduction (CTAD) 来推导 T,但我不能这样做,因为无法推导 N 并指定 {{1 }} 表示无论如何都不会尝试 CTAD。所以我采用了老式的方式:

N

这允许我只提供 template <std::size_t N,typename T> auto make_iterator(T* const p) { return iterator<T,N>(p); } 并推导出 N。是否有我忽略的 c++20(及更高版本)功能,可以让我免除此功能?我试过这个:

T

但是,它不起作用,因为:

类模板参数推导仅在没有模板的情况下进行 存在参数列表。如果指定了模板参数列表, 不发生扣减。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)