blob: 5d363884508df93c8f3c5bab3e4269f7c9b05ae1 [file] [log] [blame]
// PR c++/97518
// { dg-do compile { target c++17 } }
// { dg-options "-fdiagnostics-show-caret" }
template <typename T, typename U> struct is_same { static constexpr bool value = false; };
template <typename T> struct is_same<T, T> { static constexpr bool value = true; };
template <typename T, typename U>
void f(T, U)
{
static_assert(is_same<T, T>::value && is_same<T, U>::value); // { dg-error "56:static assertion failed" }
/* { dg-begin-multiline-output "" }
static_assert(is_same<T, T>::value && is_same<T, U>::value);
^~~~~
{ dg-end-multiline-output "" } */
// { dg-message ".is_same<int, double>::value. evaluates to false" "" { target *-*-* } .-5 }
static_assert(is_same<U, T>::value && is_same<U, U>::value); // { dg-error "32:static assertion failed" }
/* { dg-begin-multiline-output "" }
static_assert(is_same<U, T>::value && is_same<U, U>::value);
^~~~~
{ dg-end-multiline-output "" } */
// { dg-message ".is_same<double, int>::value. evaluates to false" "" { target *-*-* } .-5 }
static_assert(is_same<U, U>::value
&& is_same<U, T>::value // { dg-error "35:static assertion failed" }
&& is_same<T, T>::value);
/* { dg-begin-multiline-output "" }
&& is_same<U, T>::value
^~~~~
{ dg-end-multiline-output "" } */
// { dg-message ".is_same<double, int>::value. evaluates to false" "" { target *-*-* } .-6 }
}
void g()
{
f(0, 1.3);
}