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_nothrow_default_constructible 131468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 141468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant#include <type_traits> 151468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 161468b668aa964beb1220e9b36162b092fb54952bHoward Hinnanttemplate <class T> 171468b668aa964beb1220e9b36162b092fb54952bHoward Hinnantvoid test_is_nothrow_default_constructible() 181468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant{ 191468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant static_assert( std::is_nothrow_default_constructible<T>::value, ""); 201468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant static_assert( std::is_nothrow_default_constructible<const T>::value, ""); 211468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant static_assert( std::is_nothrow_default_constructible<volatile T>::value, ""); 221468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant static_assert( std::is_nothrow_default_constructible<const volatile T>::value, ""); 231468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant} 241468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 251468b668aa964beb1220e9b36162b092fb54952bHoward Hinnanttemplate <class T> 261468b668aa964beb1220e9b36162b092fb54952bHoward Hinnantvoid test_has_not_nothrow_default_constructor() 271468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant{ 281468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant static_assert(!std::is_nothrow_default_constructible<T>::value, ""); 291468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant static_assert(!std::is_nothrow_default_constructible<const T>::value, ""); 301468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant static_assert(!std::is_nothrow_default_constructible<volatile T>::value, ""); 311468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant static_assert(!std::is_nothrow_default_constructible<const volatile T>::value, ""); 321468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant} 331468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 341468b668aa964beb1220e9b36162b092fb54952bHoward Hinnantclass Empty 351468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant{ 361468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant}; 371468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 381468b668aa964beb1220e9b36162b092fb54952bHoward Hinnantunion Union {}; 391468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 401468b668aa964beb1220e9b36162b092fb54952bHoward Hinnantstruct bit_zero 411468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant{ 421468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant int : 0; 431468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant}; 441468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 451468b668aa964beb1220e9b36162b092fb54952bHoward Hinnantstruct A 461468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant{ 471468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant A(); 481468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant}; 491468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 501468b668aa964beb1220e9b36162b092fb54952bHoward Hinnantint main() 511468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant{ 521468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_has_not_nothrow_default_constructor<void>(); 531468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_has_not_nothrow_default_constructor<int&>(); 541468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_has_not_nothrow_default_constructor<A>(); 551468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant 561468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_is_nothrow_default_constructible<Union>(); 571468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_is_nothrow_default_constructible<Empty>(); 581468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_is_nothrow_default_constructible<int>(); 591468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_is_nothrow_default_constructible<double>(); 601468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_is_nothrow_default_constructible<int*>(); 611468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_is_nothrow_default_constructible<const int*>(); 621468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_is_nothrow_default_constructible<char[3]>(); 631468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant test_is_nothrow_default_constructible<bit_zero>(); 641468b668aa964beb1220e9b36162b092fb54952bHoward Hinnant} 65