1// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify
2
3namespace 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
33namespace 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