1

我有使用可变参数模板的代码,我试图了解省略号的放置位置。在下面的代码中,我将它们放在模板参数列表的末尾,就像错误所说的那样。但我仍然得到错误。我究竟做错了什么?

template <typename T> struct S {

    void operator << (const T &) {}

};

template <template <typename, typename...> class ... F, typename T = int>
struct N : S<F<T>> ... {};

prog.cpp:10:82: error: parameter pack 'F' must be at the end of the template parameter list

4

1 回答 1

3

T在 .之后的列表末尾还有另一个参数F. 正如错误消息所说,可变参数包必须在最后。不幸的是,这使得在同一个模板中同时拥有可变参数和默认参数变得很尴尬。

于 2012-12-13T19:59:45.277 回答