require '_h2ph_pre.ph';

no warnings qw(redefine misc);

unless(defined(&_GLIBCXX_DEBUG_SAFE_ITERATOR_H)) {
    eval 'sub _GLIBCXX_DEBUG_SAFE_ITERATOR_H () {1;}' unless defined(&_GLIBCXX_DEBUG_SAFE_ITERATOR_H);
    require 'debug/assertions.ph';
    require 'debug/macros.ph';
    require 'debug/functions.ph';
    require 'debug/safe_base.ph';
    require 'bits/stl_pair.ph';
    require 'ext/type_traits.ph';
    if((defined(&__cplusplus) ? &__cplusplus : undef) > 201703) {
	require 'compare';
    }
    eval 'sub _GLIBCXX_DEBUG_VERIFY_OPERANDS {
        my($_Lhs, $_Rhs, $_BadMsgId, $_DiffMsgId) = @_;
	    eval q( &_GLIBCXX_DEBUG_VERIFY(! ($_Lhs->{_M_singular})()  && ! ($_Rhs->{_M_singular})(),  &_M_message($_BadMsgId) . &_M_iterator($_Lhs, $_Lhs) . &_M_iterator($_Rhs, $_Rhs));  &_GLIBCXX_DEBUG_VERIFY( ($_Lhs->{_M_can_compare})($_Rhs),  &_M_message($_DiffMsgId) . &_M_iterator($_Lhs, $_Lhs) . &_M_iterator($_Rhs, $_Rhs)));
    }' unless defined(&_GLIBCXX_DEBUG_VERIFY_OPERANDS);
    eval 'sub _GLIBCXX_DEBUG_VERIFY_EQ_OPERANDS {
        my($_Lhs, $_Rhs) = @_;
	    eval q( &_GLIBCXX_DEBUG_VERIFY_OPERANDS($_Lhs, $_Rhs,  &__msg_iter_compare_bad,  &__msg_compare_different));
    }' unless defined(&_GLIBCXX_DEBUG_VERIFY_EQ_OPERANDS);
    eval 'sub _GLIBCXX_DEBUG_VERIFY_REL_OPERANDS {
        my($_Lhs, $_Rhs) = @_;
	    eval q( &_GLIBCXX_DEBUG_VERIFY_OPERANDS($_Lhs, $_Rhs,  &__msg_iter_order_bad,  &__msg_order_different));
    }' unless defined(&_GLIBCXX_DEBUG_VERIFY_REL_OPERANDS);
    eval 'sub _GLIBCXX_DEBUG_VERIFY_DIST_OPERANDS {
        my($_Lhs, $_Rhs) = @_;
	    eval q( &_GLIBCXX_DEBUG_VERIFY_OPERANDS($_Lhs, $_Rhs,  &__msg_distance_bad,  &__msg_distance_different));
    }' unless defined(&_GLIBCXX_DEBUG_VERIFY_DIST_OPERANDS);
    if((defined(&__cplusplus) ? &__cplusplus : undef) > 201703  && (defined(&__cpp_lib_concepts) ? &__cpp_lib_concepts : undef)) {
    }
    if((defined(&__cplusplus) ? &__cplusplus : undef) >= 201103) {
    }
    if((defined(&__cplusplus) ? &__cplusplus : undef) >= 201103) {
    }
    if(! (defined(&__cpp_lib_three_way_comparison) ? &__cpp_lib_three_way_comparison : undef)) {
    }
    if((defined(&__cplusplus) ? &__cplusplus : undef) >= 201103) {
    }
    if((defined(&__cplusplus) ? &__cplusplus : undef) >= 201103) {
    } else {
    }
    if((defined(&__cplusplus) ? &__cplusplus : undef) >= 201103) {
    }
    if((defined(&__cplusplus) ? &__cplusplus : undef) >= 201103) {
    } else {
    }
    if((defined(&__cpp_lib_three_way_comparison) ? &__cpp_lib_three_way_comparison : undef)) {
    } else {
    }
    if((defined(&__cplusplus) ? &__cplusplus : undef) < 201103) {
    }
    undef(&_GLIBCXX_DEBUG_VERIFY_DIST_OPERANDS) if defined(&_GLIBCXX_DEBUG_VERIFY_DIST_OPERANDS);
    undef(&_GLIBCXX_DEBUG_VERIFY_REL_OPERANDS) if defined(&_GLIBCXX_DEBUG_VERIFY_REL_OPERANDS);
    undef(&_GLIBCXX_DEBUG_VERIFY_EQ_OPERANDS) if defined(&_GLIBCXX_DEBUG_VERIFY_EQ_OPERANDS);
    undef(&_GLIBCXX_DEBUG_VERIFY_OPERANDS) if defined(&_GLIBCXX_DEBUG_VERIFY_OPERANDS);
    require 'debug/safe_iterator.tcc';
}
1;
