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

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |accepts-invalid
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2017-11-15
     Ever confirmed|0                           |1

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Reduced:

template <template <class> class, class, class = void>
struct dtect1                     { enum { value = 0 }; };

template <template <class> class TT, class T>
struct dtect1<TT, T, decltype(TT<T>{}, void())> { enum { value = 1 }; };

template <class T> struct Zod      { using type = double; };
template <>        struct Zod<int> {                      };
template <class T> using Zod_t = typename Zod<T>::type;

static_assert(!dtect1<Zod_t,int>::value, ""); // (1)

Zod_t<float> z1; // a double
Zod_t<int>   z2; // !!

Reply via email to