// PR c++/63723 // { dg-do compile { target c++11 } } template Tp declval(); template struct integral_constant { static constexpr Tp value = v; typedef Tp value_type; typedef integral_constant type; constexpr operator value_type() const { return value; } }; typedef integral_constant true_type; typedef integral_constant false_type; template class is_list_convertible_helper { template static void requires_conversion(To2 t); template ({declval()}))> static true_type helper(int); template static false_type helper(...); public: using type = decltype(helper(0)); }; template class is_list_convertible : public is_list_convertible_helper::type { }; static_assert(!is_list_convertible::value, "double -> int is narrowing!");