1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify 2*67e74705SXin Li 3*67e74705SXin Li namespace PR10457 { 4*67e74705SXin Li 5*67e74705SXin Li class string 6*67e74705SXin Li { 7*67e74705SXin Li string(const char* str, unsigned); 8*67e74705SXin Li 9*67e74705SXin Li public: 10*67e74705SXin Li template <unsigned N> string(const char (& str)[N])11*67e74705SXin Li string(const char (&str)[N]) 12*67e74705SXin Li : string(str) {} // expected-error{{constructor for 'string<6>' creates a delegation cycle}} 13*67e74705SXin Li }; 14*67e74705SXin Li f()15*67e74705SXin Li void f() { 16*67e74705SXin Li string s("hello"); 17*67e74705SXin Li } 18*67e74705SXin Li 19*67e74705SXin Li struct Foo { FooPR10457::Foo20*67e74705SXin Li Foo(int) { } 21*67e74705SXin Li 22*67e74705SXin Li 23*67e74705SXin Li template <typename T> FooPR10457::Foo24*67e74705SXin Li Foo(T, int i) : Foo(i) { } 25*67e74705SXin Li }; 26*67e74705SXin Li test_Foo()27*67e74705SXin Li void test_Foo() 28*67e74705SXin Li { 29*67e74705SXin Li Foo f(1, 1); 30*67e74705SXin Li } 31*67e74705SXin Li } 32*67e74705SXin Li 33*67e74705SXin Li namespace PR12890 { 34*67e74705SXin Li class Document 35*67e74705SXin Li { 36*67e74705SXin Li public: 37*67e74705SXin Li Document() = default; 38*67e74705SXin Li 39*67e74705SXin Li template <class T> 40*67e74705SXin Li explicit Document(T && t)41*67e74705SXin Li Document(T&& t) : Document() 42*67e74705SXin Li { 43*67e74705SXin Li } 44*67e74705SXin Li }; f()45*67e74705SXin Li void f() 46*67e74705SXin Li { 47*67e74705SXin Li Document d(1); 48*67e74705SXin Li } 49*67e74705SXin Li } 50