llvm-capstone/clang/test/SemaTemplate/delegating-constructors.cpp
Pratyush Das 99d63ccff0 Add type information to integral template argument if required.
Non-comprehensive list of cases:
 * Dumping template arguments;
 * Corresponding parameter contains a deduced type;
 * Template arguments are for a DeclRefExpr that hadMultipleCandidates()

Type information is added in the form of prefixes (u8, u, U, L),
suffixes (U, L, UL, LL, ULL) or explicit casts to printed integral template
argument, if MSVC codeview mode is disabled.

Differential revision: https://reviews.llvm.org/D77598
2021-05-12 19:00:08 +00:00

50 lines
709 B
C++

// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify
namespace PR10457 {
class string
{
string(const char* str, unsigned);
public:
template <unsigned N>
string(const char (&str)[N])
: string(str) {} // expected-error{{constructor for 'string<6U>' creates a delegation cycle}}
};
void f() {
string s("hello");
}
struct Foo {
Foo(int) { }
template <typename T>
Foo(T, int i) : Foo(i) { }
};
void test_Foo()
{
Foo f(1, 1);
}
}
namespace PR12890 {
class Document
{
public:
Document() = default;
template <class T>
explicit
Document(T&& t) : Document()
{
}
};
void f()
{
Document d(1);
}
}