require '_h2ph_pre.ph';

no warnings 'redefine';

unless(defined(&_CPP_BITS_CPP_TYPE_TRAITS_H)) {
    eval 'sub _CPP_BITS_CPP_TYPE_TRAITS_H () {1;}' unless defined(&_CPP_BITS_CPP_TYPE_TRAITS_H);
    eval("sub _M_type () { 0; }") unless defined(&_M_type);
    eval("sub _M_type () { 1; }") unless defined(&_M_type);
    eval("sub _M_type () { 0; }") unless defined(&_M_type);
    eval("sub _M_type () { 1; }") unless defined(&_M_type);
    eval("sub _M_type () { 1; }") unless defined(&_M_type);
    eval("sub _M_type () { 1; }") unless defined(&_M_type);
    eval("sub _M_type () { 1; }") unless defined(&_M_type);
    if(defined( &_GLIBCPP_USE_WCHAR_T) || defined( &_GLIBCPP_USE_TYPE_WCHAR_T)) {
	eval("sub _M_type () { 1; }") unless defined(&_M_type);
    }
    eval("sub _M_type () { 1; }") unless defined(&_M_type);
    eval("sub _M_type () { 1; }") unless defined(&_M_type);
    eval("sub _M_type () { 1; }") unless defined(&_M_type);
    eval("sub _M_type () { 1; }") unless defined(&_M_type);
    eval("sub _M_type () { 1; }") unless defined(&_M_type);
    eval("sub _M_type () { 1; }") unless defined(&_M_type);
    eval("sub _M_type () { 1; }") unless defined(&_M_type);
    eval("sub _M_type () { 1; }") unless defined(&_M_type);
    eval("sub _M_type () { 0; }") unless defined(&_M_type);
    eval("sub _M_type () { 1; }") unless defined(&_M_type);
    eval("sub _M_type () { 1; }") unless defined(&_M_type);
    eval("sub _M_type () { 1; }") unless defined(&_M_type);
    eval("sub _M_type () { __is_integer<_Tp>::_M_type||__is_floating<_Tp>::_M_type; }") unless defined(&_M_type);
    eval("sub _M_type () { __is_void<_Tp>::_M_type||__is_arithmetic<_Tp>::_M_type; }") unless defined(&_M_type);
    eval("sub _M_type () { __is_fundamental<_Tp>::_M_type; }") unless defined(&_M_type);
}
1;
