1 // PR c++/85695 2 // { dg-options -std=c++17 } 3 4 template <typename T, T v> 5 struct integral_constant { 6 using value_type = T; 7 static constexpr const value_type value = v; value_typeintegral_constant8 constexpr operator value_type (void) const { return value; } 9 }; 10 template <typename T> struct is_trivial 11 : public integral_constant<bool, __is_trivial(T)> {}; 12 13 template <typename T> clone_object(const T & p)14T clone_object (const T& p) 15 { 16 if constexpr (is_trivial<T>::value) 17 return p; 18 else 19 return p.clone(); 20 } main(void)21int main (void) { return clone_object(0); } 22