1*0a6a1f1dSLionel Sambuc // RUN: %clang_cc1 -std=c++11 -x c++-header %s -emit-pch -o %t.pch 2*0a6a1f1dSLionel Sambuc // RUN: %clang_cc1 -std=c++11 -x c++ /dev/null -include-pch %t.pch 3*0a6a1f1dSLionel Sambuc class move_only { move_only(const move_only&) = delete; move_only(move_only&&); }; 4*0a6a1f1dSLionel Sambuc struct sb { 5*0a6a1f1dSLionel Sambuc move_only il; 6*0a6a1f1dSLionel Sambuc sb(); 7*0a6a1f1dSLionel Sambuc sb(sb &&); 8*0a6a1f1dSLionel Sambuc }; 9*0a6a1f1dSLionel Sambuc 10*0a6a1f1dSLionel Sambuc template<typename T> T make(); doit(decltype(T (make<const T &> ())) *)11*0a6a1f1dSLionel Sambuctemplate<typename T> void doit(decltype(T(make<const T&>()))*) { T(make<const T&>()); } doit(...)12*0a6a1f1dSLionel Sambuctemplate<typename T> void doit(...) { T(make<T&&>()); } later()13*0a6a1f1dSLionel Sambuctemplate<typename T> void later() { doit<T>(0); } 14*0a6a1f1dSLionel Sambuc fn1()15*0a6a1f1dSLionel Sambucvoid fn1() { 16*0a6a1f1dSLionel Sambuc sb x; 17*0a6a1f1dSLionel Sambuc later<sb>(); 18*0a6a1f1dSLionel Sambuc } 19