【发布时间】:2017-12-09 18:41:12
【问题描述】:
模板的问题是您必须指定您想要的特定项目作为参数,例如typename、template 或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> {};
这是一个带有未指定参数的参数包的模板,只能通过专门化访问。
这允许对模板专业化进行更多控制并接受任何参数列表。有谁知道是否有任何关于此类功能的讨论?
如果没有,提案流程是什么?
【问题讨论】:
-
这基本上是模板重载。我希望我们将来有这样的东西。
-
@geza 不。那仍然是模板专业化。我试图用未指定参数的参数包指定模板。
-
也许,不管我们如何称呼这个特性 :) 它就像函数重载。如果模板可以用可调用的(因此它是一种类型)或函数指针(因此它是一个值)来实例化,那将很有用。