/* IBM_PROLOG_BEGIN_TAG */ /* This is an automatically generated prolog. */ /* */ /* $Source: import/chips/p9/procedures/ppe/include/std/type_traits $ */ /* */ /* OpenPOWER sbe Project */ /* */ /* Contributors Listed Below - COPYRIGHT 2016 */ /* [+] International Business Machines Corp. */ /* */ /* */ /* Licensed under the Apache License, Version 2.0 (the "License"); */ /* you may not use this file except in compliance with the License. */ /* You may obtain a copy of the License at */ /* */ /* http://www.apache.org/licenses/LICENSE-2.0 */ /* */ /* Unless required by applicable law or agreed to in writing, software */ /* distributed under the License is distributed on an "AS IS" BASIS, */ /* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ /* implied. See the License for the specific language governing */ /* permissions and limitations under the License. */ /* */ /* IBM_PROLOG_END_TAG */ #if !defined(_TYPE_TRAITS) #define _TYPE_TRAITS namespace std { /// integral_constant template struct integral_constant { static const _Tp value = __v; typedef _Tp value_type; typedef integral_constant<_Tp, __v> type; }; /// typedef for true_type typedef integral_constant true_type; /// typedef for false_type typedef integral_constant false_type; template const _Tp integral_constant<_Tp, __v>::value; /// remove_const template struct remove_const { typedef _Tp type; }; /// remove_volatile template struct remove_volatile { typedef _Tp type; }; /// remove_cv template struct remove_cv { typedef typename remove_const::type>::type type; }; template struct _is_integral_type : public false_type { }; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; /// is_integral template struct is_integral : public integral_constant::type>::value)> { }; /// is_same template struct is_same : public false_type { }; template struct is_same<_Tp, _Tp> : public true_type { }; template struct __is_pointer_helper : public false_type { }; template struct __is_pointer_helper<_Tp*> : public true_type { }; /// is_pointer template struct is_pointer : public integral_constant::type>::value)> { }; } #endif