47 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// <string>10 11// basic_string() noexcept(is_nothrow_default_constructible<allocator_type>::value); // constexpr since C++2012 13#include <cassert>14#include <string>15 16#include "test_macros.h"17#include "test_allocator.h"18#include "asan_testing.h"19 20#if TEST_STD_VER >= 1121// Test the noexcept specification, which is a conforming extension22LIBCPP_STATIC_ASSERT(std::is_nothrow_default_constructible<std::string>::value, "");23LIBCPP_STATIC_ASSERT(std::is_nothrow_default_constructible<24 std::basic_string<char, std::char_traits<char>, test_allocator<char>>>::value,25 "");26LIBCPP_STATIC_ASSERT(!std::is_nothrow_default_constructible<27 std::basic_string<char, std::char_traits<char>, limited_allocator<char, 10>>>::value,28 "");29#endif30 31TEST_CONSTEXPR_CXX20 bool test() {32 std::string str;33 assert(str.empty());34 LIBCPP_ASSERT(is_string_asan_correct(str));35 36 return true;37}38 39int main(int, char**) {40 test();41#if TEST_STD_VER > 1742 static_assert(test());43#endif44 45 return 0;46}47