138590b38SEric Fiselier //===----------------------------------------------------------------------===// 238590b38SEric 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 638590b38SEric Fiselier // 738590b38SEric Fiselier //===----------------------------------------------------------------------===// 838590b38SEric Fiselier 931cbe0f2SLouis Dionne // UNSUPPORTED: c++03 1038590b38SEric Fiselier 1138590b38SEric Fiselier // <string> 1238590b38SEric Fiselier 1338590b38SEric Fiselier // basic_string<charT,traits,Allocator>& 14*425620ccSNikolas Klauser // operator=(basic_string<charT,traits,Allocator>&& str); // constexpr since C++20 1538590b38SEric Fiselier 1638590b38SEric Fiselier #include <string> 1738590b38SEric Fiselier #include <cassert> 1838590b38SEric Fiselier 1938590b38SEric Fiselier #include "test_macros.h" 2038590b38SEric Fiselier test()21*425620ccSNikolas KlauserTEST_CONSTEXPR_CXX20 bool test() { 2238590b38SEric Fiselier // Test that assignment from {} and {ptr, len} are allowed and are not 2338590b38SEric Fiselier // ambiguous. 2438590b38SEric Fiselier { 2538590b38SEric Fiselier std::string s = "hello world"; 2638590b38SEric Fiselier s = {}; 2738590b38SEric Fiselier assert(s.empty()); 2838590b38SEric Fiselier } 2938590b38SEric Fiselier { 3038590b38SEric Fiselier std::string s = "hello world"; 3138590b38SEric Fiselier s = {"abc", 2}; 3238590b38SEric Fiselier assert(s == "ab"); 3338590b38SEric Fiselier } 342df59c50SJF Bastien 35e85018b7SNikolas Klauser return true; 36e85018b7SNikolas Klauser } 37e85018b7SNikolas Klauser main(int,char **)38e85018b7SNikolas Klauserint main(int, char**) 39e85018b7SNikolas Klauser { 40e85018b7SNikolas Klauser test(); 41e85018b7SNikolas Klauser #if TEST_STD_VER > 17 42*425620ccSNikolas Klauser static_assert(test()); 43e85018b7SNikolas Klauser #endif 44e85018b7SNikolas Klauser 452df59c50SJF Bastien return 0; 4638590b38SEric Fiselier } 47