1 // { dg-do compile { target c++14 } } 2 3 // Copyright (C) 2016-2019 Free Software Foundation, Inc. 4 // 5 // This file is part of the GNU ISO C++ Library. This library is free 6 // software; you can redistribute it and/or modify it under the 7 // terms of the GNU General Public License as published by the 8 // Free Software Foundation; either version 3, or (at your option) 9 // any later version. 10 11 // This library is distributed in the hope that it will be useful, 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 // GNU General Public License for more details. 15 16 // You should have received a copy of the GNU General Public License along 17 // with this library; see the file COPYING3. If not see 18 // <http://www.gnu.org/licenses/>. 19 20 // 8.2.1 Class template shared_ptr [memory.smartptr.shared] 21 22 #include <experimental/memory> 23 24 using namespace std::experimental; 25 26 static_assert( !is_constructible_v<shared_ptr<int>, void*>, 27 "can query constructibility without forming invalid type void[]"); 28 static_assert( !is_constructible_v<shared_ptr<int[2]>, void*>, 29 "can query constructibility without forming invalid type void[]"); 30 static_assert( !is_constructible_v<shared_ptr<int[]>, void*>, 31 "can query constructibility without forming invalid type void[]"); 32 33 static_assert( !is_constructible_v<shared_ptr<int>, void()>, 34 "can query constructibility without forming invalid type void()[]"); 35 static_assert( !is_constructible_v<shared_ptr<int[2]>, void()>, 36 "can query constructibility without forming invalid type void()[]"); 37 static_assert( !is_constructible_v<shared_ptr<int[]>, void()>, 38 "can query constructibility without forming invalid type void()[]"); 39 40 static_assert( !is_constructible_v<shared_ptr<int>, void()>, 41 "can query constructibility without forming invalid type void(*)()[]"); 42 static_assert( !is_constructible_v<shared_ptr<int[2]>, void()>, 43 "can query constructibility without forming invalid type void(*)()[]"); 44 static_assert( !is_constructible_v<shared_ptr<int[]>, void()>, 45 "can query constructibility without forming invalid type void(*)()[]"); 46 47 using A = int[]; 48 static_assert( !is_constructible_v<shared_ptr<int>, A*>, 49 "can query constructibility without forming invalid type int[][]"); 50 static_assert( !is_constructible_v<shared_ptr<int[2]>, A*>, 51 "can query constructibility without forming invalid type int[][]"); 52 static_assert( !is_constructible_v<shared_ptr<int[]>, A*>, 53 "can query constructibility without forming invalid type int[][]"); 54