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// is_trivially_default_constructible 131468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 141468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant#include <type_traits> 151468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 161468b668aa964beb1220e9b36162b092fb54952bHoward Hinnanttemplate <class T> 171468b668aa964beb1220e9b36162b092fb54952bHoward Hinnantvoid test_is_trivially_default_constructible() 181468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant{ 191468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant static_assert( std::is_trivially_default_constructible<T>::value, ""); 201468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant static_assert( std::is_trivially_default_constructible<const T>::value, ""); 211468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant static_assert( std::is_trivially_default_constructible<volatile T>::value, ""); 221468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant static_assert( std::is_trivially_default_constructible<const volatile T>::value, ""); 231468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant} 241468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 251468b668aa964beb1220e9b36162b092fb54952bHoward Hinnanttemplate <class T> 261468b668aa964beb1220e9b36162b092fb54952bHoward Hinnantvoid test_has_not_trivial_default_constructor() 271468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant{ 281468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant static_assert(!std::is_trivially_default_constructible<T>::value, ""); 291468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant static_assert(!std::is_trivially_default_constructible<const T>::value, ""); 301468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant static_assert(!std::is_trivially_default_constructible<volatile T>::value, ""); 311468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant static_assert(!std::is_trivially_default_constructible<const volatile T>::value, ""); 321468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant} 331468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 341468b668aa964beb1220e9b36162b092fb54952bHoward Hinnantclass Empty 351468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant{ 361468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant}; 371468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 381468b668aa964beb1220e9b36162b092fb54952bHoward Hinnantclass NotEmpty 391468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant{ 401468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant virtual ~NotEmpty(); 411468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant}; 421468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 431468b668aa964beb1220e9b36162b092fb54952bHoward Hinnantunion Union {}; 441468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 451468b668aa964beb1220e9b36162b092fb54952bHoward Hinnantstruct bit_zero 461468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant{ 471468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant int : 0; 481468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant}; 491468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 501468b668aa964beb1220e9b36162b092fb54952bHoward Hinnantclass Abstract 511468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant{ 521468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant virtual ~Abstract() = 0; 531468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant}; 541468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 551468b668aa964beb1220e9b36162b092fb54952bHoward Hinnantstruct A 561468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant{ 571468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant A(); 581468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant}; 591468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 601468b668aa964beb1220e9b36162b092fb54952bHoward Hinnantint main() 611468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant{ 621468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_has_not_trivial_default_constructor<void>(); 631468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_has_not_trivial_default_constructor<int&>(); 641468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_has_not_trivial_default_constructor<A>(); 651468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_has_not_trivial_default_constructor<Abstract>(); 661468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_has_not_trivial_default_constructor<NotEmpty>(); 671468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 681468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_is_trivially_default_constructible<Union>(); 691468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_is_trivially_default_constructible<Empty>(); 701468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_is_trivially_default_constructible<int>(); 711468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_is_trivially_default_constructible<double>(); 721468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_is_trivially_default_constructible<int*>(); 731468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_is_trivially_default_constructible<const int*>(); 741468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_is_trivially_default_constructible<char[3]>(); 751468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_is_trivially_default_constructible<bit_zero>(); 761468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant} 77