xref: /minix3/external/bsd/llvm/dist/clang/test/SemaCXX/dependent-noexcept-unevaluated.cpp (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1f4a2713aSLionel Sambuc // RUN: %clang_cc1 -fsyntax-only -std=c++11 %s
2f4a2713aSLionel Sambuc 
3f4a2713aSLionel Sambuc template <class T>
4f4a2713aSLionel Sambuc T&&
5f4a2713aSLionel Sambuc declval() noexcept;
6f4a2713aSLionel Sambuc 
7f4a2713aSLionel Sambuc template <class T>
8f4a2713aSLionel Sambuc struct some_trait
9f4a2713aSLionel Sambuc {
10f4a2713aSLionel Sambuc     static const bool value = false;
11f4a2713aSLionel Sambuc };
12f4a2713aSLionel Sambuc 
13f4a2713aSLionel Sambuc template <class T>
swap(T & x,T & y)14f4a2713aSLionel Sambuc void swap(T& x, T& y) noexcept(some_trait<T>::value)
15f4a2713aSLionel Sambuc {
16f4a2713aSLionel Sambuc     T tmp(static_cast<T&&>(x));
17f4a2713aSLionel Sambuc     x = static_cast<T&&>(y);
18f4a2713aSLionel Sambuc     y = static_cast<T&&>(tmp);
19f4a2713aSLionel Sambuc }
20f4a2713aSLionel Sambuc 
21f4a2713aSLionel Sambuc template <class T, unsigned N>
22f4a2713aSLionel Sambuc struct array
23f4a2713aSLionel Sambuc {
24f4a2713aSLionel Sambuc     T data[N];
25f4a2713aSLionel Sambuc 
26*0a6a1f1dSLionel Sambuc   void swap(array& a) noexcept(noexcept(::swap(declval<T&>(), declval<T&>())));
27f4a2713aSLionel Sambuc };
28f4a2713aSLionel Sambuc 
29f4a2713aSLionel Sambuc struct DefaultOnly
30f4a2713aSLionel Sambuc {
31f4a2713aSLionel Sambuc     DefaultOnly() = default;
32f4a2713aSLionel Sambuc     DefaultOnly(const DefaultOnly&) = delete;
33f4a2713aSLionel Sambuc     DefaultOnly& operator=(const DefaultOnly&) = delete;
34f4a2713aSLionel Sambuc     ~DefaultOnly() = default;
35f4a2713aSLionel Sambuc };
36f4a2713aSLionel Sambuc 
main()37f4a2713aSLionel Sambuc int main()
38f4a2713aSLionel Sambuc {
39f4a2713aSLionel Sambuc     array<DefaultOnly, 1> a, b;
40f4a2713aSLionel Sambuc }
41*0a6a1f1dSLionel Sambuc 
42