//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // unique_ptr // test op*() #include #include #include "test_macros.h" #include "unique_ptr_test_helper.h" template void doTest(UPtr& p, bool ExpectTrue) { if (p) assert(ExpectTrue); else assert(!ExpectTrue); if (!p) assert(!ExpectTrue); else assert(ExpectTrue); } template void test_basic() { typedef typename std::conditional::type VT; typedef std::unique_ptr U; { static_assert((std::is_constructible::value), ""); static_assert((std::is_constructible::value), ""); } #if TEST_STD_VER >= 11 { static_assert(!std::is_convertible::value, ""); static_assert(!std::is_convertible::value, ""); } #endif { U p(newValue(1)); U const& cp = p; doTest(p, true); doTest(cp, true); } { U p; const U& cp = p; doTest(p, false); doTest(cp, false); } } int main(int, char**) { test_basic(); test_basic(); return 0; }