]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CXX/special/class.inhctor/p8.cpp
Vendor import of clang tags/RELEASE_33/final r183502 (effectively, 3.3
[FreeBSD/FreeBSD.git] / test / CXX / special / class.inhctor / p8.cpp
1 // RUN: %clang_cc1 -std=c++11 -verify %s
2
3 // expected-no-diagnostics
4 struct A {
5   constexpr A(const int&) : rval(false) {}
6   constexpr A(const int&&) : rval(true) {}
7   bool rval;
8 };
9 struct B : A {
10   using A::A;
11 };
12
13 constexpr int k = 0;
14 constexpr A a0{0};
15 constexpr A a1{k};
16 constexpr B b0{0};
17 // This performs static_cast<(const int&)&&>(k), so calls the A(const int&)
18 // constructor.
19 constexpr B b1{k};
20
21 static_assert(a0.rval && !a1.rval && b0.rval && !b1.rval, "");
22
23 struct C {
24   template<typename T> constexpr C(T t) : v(t) {}
25   int v;
26 };
27 struct D : C {
28   using C::C;
29 };
30 static_assert(D(123).v == 123, "");