1/* 2 * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25#include "precompiled.hpp" 26#include "memory/allocation.hpp" 27#include "metaprogramming/removeCV.hpp" 28#include "metaprogramming/isSame.hpp" 29#include "utilities/debug.hpp" 30 31class RemoveCVTest { 32 class A: AllStatic {}; 33 34 typedef const A cA; 35 typedef volatile A vA; 36 typedef const volatile A cvA; 37 typedef A* Aptr; 38 typedef const A* cAptr; 39 typedef A* const Aptrc; 40 typedef const A* const cAptrc; 41 typedef A& Aref; 42 typedef const A& cAref; 43 44 typedef RemoveCV<A>::type rcv_A; 45 static const bool rcv_A_is_A = IsSame<rcv_A, A>::value; 46 STATIC_ASSERT(rcv_A_is_A); 47 48 typedef RemoveCV<cA>::type rcv_cA; 49 static const bool rcv_cA_is_A = IsSame<rcv_cA, A>::value; 50 STATIC_ASSERT(rcv_cA_is_A); 51 52 typedef RemoveCV<vA>::type rcv_vA; 53 static const bool rcv_vA_is_A = IsSame<rcv_vA, A>::value; 54 STATIC_ASSERT(rcv_vA_is_A); 55 56 typedef RemoveCV<cvA>::type rcv_cvA; 57 static const bool rcv_cvA_is_A = IsSame<rcv_cvA, A>::value; 58 STATIC_ASSERT(rcv_cvA_is_A); 59 60 typedef RemoveCV<cAptr>::type rcv_cAptr; 61 static const bool rcv_cAptr_is_cAptr = IsSame<rcv_cAptr, cAptr>::value; 62 STATIC_ASSERT(rcv_cAptr_is_cAptr); 63 64 typedef RemoveCV<Aptrc>::type rcv_Aptrc; 65 static const bool rcv_Aptrc_is_Aptr = IsSame<rcv_Aptrc, Aptr>::value; 66 STATIC_ASSERT(rcv_Aptrc_is_Aptr); 67 68 typedef RemoveCV<cAptrc>::type rcv_cAptrc; 69 static const bool rcv_cAptrc_is_cAptr = IsSame<rcv_cAptrc, cAptr>::value; 70 STATIC_ASSERT(rcv_cAptrc_is_cAptr); 71 72 typedef RemoveCV<cAref>::type rcv_cAref; 73 static const bool rcv_cAref_is_cAref = IsSame<rcv_cAref, cAref>::value; 74 STATIC_ASSERT(rcv_cAref_is_cAref); 75}; 76