//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // 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() { test_basic(); test_basic(); }