问题描述
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 (将#修改为@)