[Bug c++/57384] can't expand a parameter pack into a list of function types or function pointer types
eric.niebler at gmail dot com
gcc-bugzilla@gcc.gnu.org
Thu May 23 21:57:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57384
--- Comment #3 from Eric Niebler <eric.niebler at gmail dot com> ---
Interesting. I filed a similar bug against clang
(http://llvm.org/bugs/show_bug.cgi?id=16118), where Richard Smith seems to feel
the test cases should be:
template<typename ...Ts>
struct list
{};
template<typename ...Ts>
struct S
{
using type1 = void(int...(Ts)); // (1) fails
using type2 = list<int(Ts)...>; // (2) works
using type3 = void(int(*...)(Ts)); // (3) fails
using type4 = list<int(*)(Ts)...>; // (4) works
};
This strikes me as ludicrously inconsistent. I think we need guidance from the
committee here. I was basing my bug report(s) on the example in 8.3.5/13 (which
shows:
template<typename... T> void f(T (* ...t)(int, int));
The suggestion that the pack expansion syntax differs depending on the context
in which the expansion occurs is, um, unsatisfactory.
More information about the Gcc-bugs
mailing list