https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86933

            Bug ID: 86933
           Summary: GCC fails to recognize specialization of variadic
                    non-type template parameter declared with `auto`
           Product: gcc
           Version: 8.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: d25fe0be at outlook dot com
  Target Milestone: ---

The following code fails to compile, saying `TT<&X::x, &X::y>` is not defined.

````
template <auto... Vs> struct TT;
template <class T, class... Ms, Ms T::*... Ptrs> struct TT<Ptrs...> {};

struct X {
    int x;
    double y;
};

TT<&X::x, &X::y> t;
```

Not sure if related, the following code (reduced version) is rejected as well:

```
template <auto... Vs> struct TT;
template <class... T, T*... Ptrs> struct TT<Ptrs...> {};

int x;
double y;

TT<&x, &y> t;
```

clang (5.0 or higher) accepts both.

Live example: https://wandbox.org/permlink/ObPM2S5s0bsczNfk

Reply via email to