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 Klauser TEST_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 Klauser int 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