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-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 // UNSUPPORTED: c++03, c++11 10 #include <memory> 11 #include <string> 12 #include <cassert> 13 14 #include "test_macros.h" 15 test()16TEST_CONSTEXPR_CXX23 bool test() { 17 { 18 std::unique_ptr<int> p1 = std::make_unique<int>(1); 19 assert(*p1 == 1); 20 p1 = std::make_unique<int>(); 21 assert(*p1 == 0); 22 } 23 24 { 25 std::unique_ptr<std::string> p2 = std::make_unique<std::string>("Meow!"); 26 assert(*p2 == "Meow!"); 27 p2 = std::make_unique<std::string>(); 28 assert(*p2 == ""); 29 p2 = std::make_unique<std::string>(6, 'z'); 30 assert(*p2 == "zzzzzz"); 31 } 32 33 return true; 34 } 35 main(int,char **)36int main(int, char**) { 37 test(); 38 #if TEST_STD_VER >= 23 39 static_assert(test()); 40 #endif 41 42 return 0; 43 } 44