11468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant//===----------------------------------------------------------------------===// 21468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant// 31468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant// The LLVM Compiler Infrastructure 41468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant// 51468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 61468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant// Source Licenses. See LICENSE.TXT for details. 71468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant// 81468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant//===----------------------------------------------------------------------===// 91468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 101468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant// type_traits 111468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 121468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant// template <class T, class... Args> 131468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant// struct is_trivially_constructible; 141468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 151468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant#include <type_traits> 161468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 17933afa9761c1c1f916161278a99284d50a594939Marshall Clowtemplate <class T> 18933afa9761c1c1f916161278a99284d50a594939Marshall Clowvoid test_is_trivially_constructible() 19933afa9761c1c1f916161278a99284d50a594939Marshall Clow{ 20933afa9761c1c1f916161278a99284d50a594939Marshall Clow static_assert(( std::is_trivially_constructible<T>::value), ""); 21933afa9761c1c1f916161278a99284d50a594939Marshall Clow} 22933afa9761c1c1f916161278a99284d50a594939Marshall Clow 23933afa9761c1c1f916161278a99284d50a594939Marshall Clowtemplate <class T, class A0> 24933afa9761c1c1f916161278a99284d50a594939Marshall Clowvoid test_is_trivially_constructible() 25933afa9761c1c1f916161278a99284d50a594939Marshall Clow{ 26933afa9761c1c1f916161278a99284d50a594939Marshall Clow static_assert(( std::is_trivially_constructible<T, A0>::value), ""); 27933afa9761c1c1f916161278a99284d50a594939Marshall Clow} 28933afa9761c1c1f916161278a99284d50a594939Marshall Clow 29933afa9761c1c1f916161278a99284d50a594939Marshall Clowtemplate <class T> 30933afa9761c1c1f916161278a99284d50a594939Marshall Clowvoid test_is_not_trivially_constructible() 31933afa9761c1c1f916161278a99284d50a594939Marshall Clow{ 32933afa9761c1c1f916161278a99284d50a594939Marshall Clow static_assert((!std::is_trivially_constructible<T>::value), ""); 33933afa9761c1c1f916161278a99284d50a594939Marshall Clow} 34933afa9761c1c1f916161278a99284d50a594939Marshall Clow 35933afa9761c1c1f916161278a99284d50a594939Marshall Clowtemplate <class T, class A0> 36933afa9761c1c1f916161278a99284d50a594939Marshall Clowvoid test_is_not_trivially_constructible() 37933afa9761c1c1f916161278a99284d50a594939Marshall Clow{ 38933afa9761c1c1f916161278a99284d50a594939Marshall Clow static_assert((!std::is_trivially_constructible<T, A0>::value), ""); 39933afa9761c1c1f916161278a99284d50a594939Marshall Clow} 40933afa9761c1c1f916161278a99284d50a594939Marshall Clow 41933afa9761c1c1f916161278a99284d50a594939Marshall Clowtemplate <class T, class A0, class A1> 42933afa9761c1c1f916161278a99284d50a594939Marshall Clowvoid test_is_not_trivially_constructible() 43933afa9761c1c1f916161278a99284d50a594939Marshall Clow{ 44933afa9761c1c1f916161278a99284d50a594939Marshall Clow static_assert((!std::is_trivially_constructible<T, A0, A1>::value), ""); 45933afa9761c1c1f916161278a99284d50a594939Marshall Clow} 46933afa9761c1c1f916161278a99284d50a594939Marshall Clow 471468b668aa964beb1220e9b36162b092fb54952bHoward Hinnantstruct A 481468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant{ 491468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant explicit A(int); 501468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant A(int, double); 511468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant}; 521468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 531468b668aa964beb1220e9b36162b092fb54952bHoward Hinnantint main() 541468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant{ 55933afa9761c1c1f916161278a99284d50a594939Marshall Clow test_is_trivially_constructible<int> (); 56933afa9761c1c1f916161278a99284d50a594939Marshall Clow test_is_trivially_constructible<int, const int&> (); 57933afa9761c1c1f916161278a99284d50a594939Marshall Clow 58933afa9761c1c1f916161278a99284d50a594939Marshall Clow test_is_not_trivially_constructible<A, int> (); 59933afa9761c1c1f916161278a99284d50a594939Marshall Clow test_is_not_trivially_constructible<A, int, double> (); 60933afa9761c1c1f916161278a99284d50a594939Marshall Clow test_is_not_trivially_constructible<A> (); 611468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant} 62