xref: /llvm-project/clang/test/SemaTemplate/delegating-constructors.cpp (revision a9e9ebcfb5268f2ebab8c46ea9e025e1c0caeddc)
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>
11     string(const char (&str)[N])
12       : string(str) {} // expected-error{{constructor for 'string<6>' creates a delegation cycle}}
13   };
14 
15   void f() {
16     string s("hello");
17   }
18 
19   struct Foo {
20    Foo(int) { }
21 
22 
23    template <typename T>
24    Foo(T, int i) : Foo(i) { }
25 };
26 
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
41       Document(T&& t) : Document()
42       {
43       }
44   };
45   void f()
46   {
47       Document d(1);
48   }
49 }
50