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 
938590b38SEric Fiselier // UNSUPPORTED: c++98, c++03
1038590b38SEric Fiselier 
1138590b38SEric Fiselier // <string>
1238590b38SEric Fiselier 
1338590b38SEric Fiselier // basic_string<charT,traits,Allocator>&
1438590b38SEric Fiselier //   operator=(basic_string<charT,traits,Allocator>&& str);
1538590b38SEric Fiselier 
1638590b38SEric Fiselier #include <string>
1738590b38SEric Fiselier #include <cassert>
1838590b38SEric Fiselier 
1938590b38SEric Fiselier #include "test_macros.h"
2038590b38SEric Fiselier 
21*2df59c50SJF Bastien int main(int, char**)
2238590b38SEric Fiselier {
2338590b38SEric Fiselier   // Test that assignment from {} and {ptr, len} are allowed and are not
2438590b38SEric Fiselier   // ambiguous.
2538590b38SEric Fiselier   {
2638590b38SEric Fiselier     std::string s = "hello world";
2738590b38SEric Fiselier     s = {};
2838590b38SEric Fiselier     assert(s.empty());
2938590b38SEric Fiselier   }
3038590b38SEric Fiselier   {
3138590b38SEric Fiselier     std::string s = "hello world";
3238590b38SEric Fiselier     s = {"abc", 2};
3338590b38SEric Fiselier     assert(s == "ab");
3438590b38SEric Fiselier   }
35*2df59c50SJF Bastien 
36*2df59c50SJF Bastien   return 0;
3738590b38SEric Fiselier }
38