1*628fcfd5SNikolas Klauser //===----------------------------------------------------------------------===// 2*628fcfd5SNikolas Klauser // 3*628fcfd5SNikolas Klauser // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*628fcfd5SNikolas Klauser // See https://llvm.org/LICENSE.txt for license information. 5*628fcfd5SNikolas Klauser // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*628fcfd5SNikolas Klauser // 7*628fcfd5SNikolas Klauser //===----------------------------------------------------------------------===// 8*628fcfd5SNikolas Klauser 9*628fcfd5SNikolas Klauser // <string> 10*628fcfd5SNikolas Klauser 11*628fcfd5SNikolas Klauser // basic_string() noexcept(is_nothrow_default_constructible<allocator_type>::value); 12*628fcfd5SNikolas Klauser 13*628fcfd5SNikolas Klauser #include <cassert> 14*628fcfd5SNikolas Klauser #include <string> 15*628fcfd5SNikolas Klauser 16*628fcfd5SNikolas Klauser #include "test_macros.h" 17*628fcfd5SNikolas Klauser #include "test_allocator.h" 18*628fcfd5SNikolas Klauser 19*628fcfd5SNikolas Klauser #if TEST_STD_VER >= 11 20*628fcfd5SNikolas Klauser // Test the noexcept specification, which is a conforming extension 21*628fcfd5SNikolas Klauser LIBCPP_STATIC_ASSERT(std::is_nothrow_default_constructible<std::string>::value, ""); 22*628fcfd5SNikolas Klauser LIBCPP_STATIC_ASSERT(std::is_nothrow_default_constructible< 23*628fcfd5SNikolas Klauser std::basic_string<char, std::char_traits<char>, test_allocator<char>>>::value, ""); 24*628fcfd5SNikolas Klauser LIBCPP_STATIC_ASSERT(!std::is_nothrow_default_constructible< 25*628fcfd5SNikolas Klauser std::basic_string<char, std::char_traits<char>, limited_allocator<char, 10>>>::value, ""); 26*628fcfd5SNikolas Klauser #endif 27*628fcfd5SNikolas Klauser 28*628fcfd5SNikolas Klauser bool test() { 29*628fcfd5SNikolas Klauser std::string str; 30*628fcfd5SNikolas Klauser assert(str.empty()); 31*628fcfd5SNikolas Klauser 32*628fcfd5SNikolas Klauser return true; 33*628fcfd5SNikolas Klauser } 34*628fcfd5SNikolas Klauser 35*628fcfd5SNikolas Klauser int main(int, char**) 36*628fcfd5SNikolas Klauser { 37*628fcfd5SNikolas Klauser test(); 38*628fcfd5SNikolas Klauser #if TEST_STD_VER > 17 39*628fcfd5SNikolas Klauser // static_assert(test()); 40*628fcfd5SNikolas Klauser #endif 41*628fcfd5SNikolas Klauser 42*628fcfd5SNikolas Klauser return 0; 43*628fcfd5SNikolas Klauser } 44