blob: 31d4d897984bb1cb3b3c08a2acf804757cc17d26 [file] [log] [blame]
// PR c++/98620
// { dg-do compile { target c++11 } }
namespace std {
template<typename T>
T&& declval() noexcept;
template<bool B>
struct bool_constant {
static constexpr bool value = B;
using type = bool_constant;
};
using true_type = bool_constant<true>;
using false_type = bool_constant<false>;
};
template <typename T>
struct TmpArray
{
T arr[1];
};
template <typename Src, typename Dst, typename = void>
struct is_non_narrowing_conversion : std::false_type
{};
template <typename Src, typename Dst>
struct is_non_narrowing_conversion<
Src, Dst,
decltype(void(TmpArray<Dst>{{ std::declval<Src>() }})) // { dg-bogus "missing initializer" }
> : std::true_type
{};
struct mystruct
{
int a;
void * b;
};
void test_nok()
{
is_non_narrowing_conversion<int&, mystruct>::type v;
(void) v;
}