From 949338ff18ffbf599ba31e56636ba2a58b04d027 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Thu, 2 Nov 2017 17:45:17 +0200 Subject: [PATCH] Add test that verifies no temporaries are created by array make_shared --- test/Jamfile | 2 ++ test/make_shared_array_tmp_test.cpp | 43 +++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 test/make_shared_array_tmp_test.cpp diff --git a/test/Jamfile b/test/Jamfile index e865ac0..52f3931 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -264,3 +264,5 @@ run allocate_local_shared_array_construct_test.cpp ; run local_sp_fn_test.cpp ; run lsp_convertible_test.cpp ; run lsp_convertible_test2.cpp ; + +run make_shared_array_tmp_test.cpp ; diff --git a/test/make_shared_array_tmp_test.cpp b/test/make_shared_array_tmp_test.cpp new file mode 100644 index 0000000..6e776bb --- /dev/null +++ b/test/make_shared_array_tmp_test.cpp @@ -0,0 +1,43 @@ +// make_shared_array_tmp_test.cpp +// +// Copyright 2017 Peter Dimov +// +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt + +#include +#include + +struct X +{ + static int destroyed; + + ~X() + { + ++destroyed; + } +}; + +int X::destroyed = 0; + +int main() +{ + { + X::destroyed = 0; + + boost::make_shared< X[3] >(); + + BOOST_TEST_EQ( X::destroyed, 3 ); + } + + { + X::destroyed = 0; + + boost::make_shared< X[] >( 3 ); + + BOOST_TEST_EQ( X::destroyed, 3 ); + } + + return boost::report_errors(); +}