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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|libstdc++                   |c++

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
This isn't a libstdc++ problem, the definition is is_same is correct.

template<typename T, typename U> struct is_same { enum { value = 0 }; };
template<typename T> struct is_same<T, T> { enum { value = 1 }; };

template<typename T>
struct foo
{
    using sub = struct some_struct;
};

template<typename T>
struct bar
{
    using sub = struct some_struct { };
};

int main()
{
    static_assert(is_same<foo<int>::sub, foo<double>::sub>::value, "should not
pass");
    static_assert(is_same<bar<int>::sub, bar<double>::sub>::value, "should not
pass");
}


Passes with EDG, fails with GCC (and Clang).

Reply via email to