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