blob: 4171d4d32f5d522e039403e83eb0f1f6c8dd9dc6 [file] [log] [blame]
Howard Hinnant1468b662010-11-19 22:17:28 +00001//===----------------------------------------------------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// type_traits
11
12// template <class T, class... Args>
13// struct is_trivially_constructible;
14
15#include <type_traits>
16
Marshall Clow933afa92013-07-04 00:10:01 +000017template <class T>
18void test_is_trivially_constructible()
19{
20 static_assert(( std::is_trivially_constructible<T>::value), "");
21}
22
23template <class T, class A0>
24void test_is_trivially_constructible()
25{
26 static_assert(( std::is_trivially_constructible<T, A0>::value), "");
27}
28
29template <class T>
30void test_is_not_trivially_constructible()
31{
32 static_assert((!std::is_trivially_constructible<T>::value), "");
33}
34
35template <class T, class A0>
36void test_is_not_trivially_constructible()
37{
38 static_assert((!std::is_trivially_constructible<T, A0>::value), "");
39}
40
41template <class T, class A0, class A1>
42void test_is_not_trivially_constructible()
43{
44 static_assert((!std::is_trivially_constructible<T, A0, A1>::value), "");
45}
46
Howard Hinnant1468b662010-11-19 22:17:28 +000047struct A
48{
49 explicit A(int);
50 A(int, double);
51};
52
53int main()
54{
Marshall Clow933afa92013-07-04 00:10:01 +000055 test_is_trivially_constructible<int> ();
56 test_is_trivially_constructible<int, const int&> ();
57
58 test_is_not_trivially_constructible<A, int> ();
59 test_is_not_trivially_constructible<A, int, double> ();
60 test_is_not_trivially_constructible<A> ();
Howard Hinnant1468b662010-11-19 22:17:28 +000061}