使用一些用户提供的参数进行模板推导

Template deduction with some user-supplied arguments

提问人:user835943 提问时间:11/11/2021 更新时间:11/11/2021 访问量:229

问:

假设有一个具有两个模板参数的类

template<typename A, typename B>
class C {
  C(B::X x) {}
};

是否可以有一个扣除指南,其中只有一个参数是推断的,另一个是用户指定的?

template<typename A, typename D>
C(D) -> C<A, D::Y>;

当我尝试这个时,clang给了我“推导模板包含一个无法推导的模板参数”

C++ 模板 template-argument-deduction 演绎指南

评论

0赞 康桓瑋 11/11/2021
简单的答案是否定的。
0赞 StoryTeller - Unslander Monica 11/11/2021
更长的答案是,在添加模板参数的那一刻,CTAD 被显式禁用。 不会做 CTAD。如果你没有一个可行的默认参数,你就不走运了。您的问题可以通过工厂函数解决,类似于标准库中的函数。C<D> c(whatever);make_*

答: 暂无答案