2

模板的问题是您必须指定您想要的特定项目作为参数,例如 a typename、 atemplate或 a value。但是,您不能说根据下一个参数是否是这三个参数中的任何一个来专门化模板。

我在想,如果有一种方法可以根据这些参数进行专门化,如下例所示:

template <...Xs>
struct X;

template <template <typename...> class TT>
struct X<TT> {};

template <typename T>
struct X<T> {};

template <typename T, T I>
struct X<I> {};

这是一个带有未指定参数的参数包的模板,并且只能通过专门化访问。

这允许对模板专业化进行更多控制并接受任何参数列表。有谁知道是否有任何关于这样的功能的讨论?

如果没有,提案流程是什么?

4

2 回答 2

1

通用模板参数已提交给 2020 年 2 月的布拉格会议。它template auto X作为任意模板实体的语法引入。EWG-I 对此进行了讨论并收到了反馈。我相信作者会将它带回瓦尔纳的下一次会议。

于 2020-02-26T05:20:26.940 回答
0

好吧,似乎还没有正式的提案,但是有一个关于如何在此处完成的建议。它试图template在裸上下文中重用关键字来定义将采用未指定模板参数类型 (UTPT) 的模板参数。

在我在这里知道那个提案之前,我已经写了另一个提案。它不使用关键字来指示模板参数类型 (TPT) 未指定。它显示了一个并排比较,显示了一个真实世界的模板示例,该示例将受益于拥有一个 UTPT 以及它在实施建议后的外观。

我希望您可能会觉得这些有趣,如果是这样,请对其中任何一个发表评论,以便他们得到更多关注。

于 2017-12-13T05:48:10.420 回答