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)14 T 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)21 int main (void) { return clone_object(0); }
22