15a83710eSEric Fiselier //===----------------------------------------------------------------------===// 25a83710eSEric Fiselier // 357b08b09SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 457b08b09SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 557b08b09SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 65a83710eSEric Fiselier // 75a83710eSEric Fiselier //===----------------------------------------------------------------------===// 85a83710eSEric Fiselier 91f4231f8SEric Fiselier // UNSUPPORTED: c++98, c++03 101f4231f8SEric Fiselier 115a83710eSEric Fiselier // <string> 125a83710eSEric Fiselier 135a83710eSEric Fiselier // basic_string(basic_string&&) 145a83710eSEric Fiselier // noexcept(is_nothrow_move_constructible<allocator_type>::value); 155a83710eSEric Fiselier 165a83710eSEric Fiselier // This tests a conforming extension 175a83710eSEric Fiselier 185a83710eSEric Fiselier #include <string> 195a83710eSEric Fiselier #include <cassert> 205a83710eSEric Fiselier 21cbf166a2SMarshall Clow #include "test_macros.h" 225a83710eSEric Fiselier #include "test_allocator.h" 235a83710eSEric Fiselier 24*2df59c50SJF Bastien int main(int, char**) 255a83710eSEric Fiselier { 265a83710eSEric Fiselier { 275a83710eSEric Fiselier typedef std::string C; 285a83710eSEric Fiselier static_assert(std::is_nothrow_move_constructible<C>::value, ""); 295a83710eSEric Fiselier } 305a83710eSEric Fiselier { 315a83710eSEric Fiselier typedef std::basic_string<char, std::char_traits<char>, test_allocator<char>> C; 325a83710eSEric Fiselier static_assert(std::is_nothrow_move_constructible<C>::value, ""); 335a83710eSEric Fiselier } 345a83710eSEric Fiselier { 3576b26852SMarshall Clow typedef std::basic_string<char, std::char_traits<char>, limited_allocator<char, 10>> C; 36cbf166a2SMarshall Clow #if TEST_STD_VER <= 14 375a83710eSEric Fiselier static_assert(!std::is_nothrow_move_constructible<C>::value, ""); 38cbf166a2SMarshall Clow #else 39cbf166a2SMarshall Clow static_assert( std::is_nothrow_move_constructible<C>::value, ""); 40cbf166a2SMarshall Clow #endif 415a83710eSEric Fiselier } 42*2df59c50SJF Bastien 43*2df59c50SJF Bastien return 0; 445a83710eSEric Fiselier } 45