require '_h2ph_pre.ph';

no warnings 'redefine';

unless(defined(&_GLIBCPP_BOOST_CONCEPT_CHECK)) {
    eval 'sub _GLIBCPP_BOOST_CONCEPT_CHECK () {1;}' unless defined(&_GLIBCPP_BOOST_CONCEPT_CHECK);
    require 'cstddef';
    require 'bits/stl_iterator_base_types.ph';
    require 'utility';
    eval 'sub _IsUnused () { &__attribute__ (( &__unused__));}' unless defined(&_IsUnused);
    eval 'sub _GLIBCPP_CLASS_REQUIRES {
        my($_type_var, $_ns, $_concept) = @_;
	    eval q( &typedef  &void ($_ns::$_concept <$_type_var>::*  &_func$_type_var$_concept)();  &template < &_func$_type_var$_concept  &_Tp1> \'struct _concept_checking\'$_type_var$_concept { };  &typedef  &_concept_checking$_type_var$_concept< &$_ns::$_concept <$_type_var>:: &__constraints>  &_concept_checking_typedef$_type_var$_concept);
    }' unless defined(&_GLIBCPP_CLASS_REQUIRES);
    eval 'sub _GLIBCPP_CLASS_REQUIRES2 {
        my($_type_var1, $_type_var2, $_ns, $_concept) = @_;
	    eval q( &typedef  &void ($_ns::$_concept <$_type_var1,$_type_var2>::*  &_func$_type_var1$_type_var2$_concept)();  &template < &_func$_type_var1$_type_var2$_concept  &_Tp1> \'struct _concept_checking\'$_type_var1$_type_var2$_concept { };  &typedef  &_concept_checking$_type_var1$_type_var2$_concept< &$_ns::$_concept <$_type_var1,$_type_var2>:: &__constraints>  &_concept_checking_typedef$_type_var1$_type_var2$_concept);
    }' unless defined(&_GLIBCPP_CLASS_REQUIRES2);
    eval 'sub _GLIBCPP_CLASS_REQUIRES3 {
        my($_type_var1, $_type_var2, $_type_var3, $_ns, $_concept) = @_;
	    eval q( &typedef  &void ($_ns::$_concept <$_type_var1,$_type_var2,$_type_var3>::*  &_func$_type_var1$_type_var2$_type_var3$_concept)();  &template < &_func$_type_var1$_type_var2$_type_var3$_concept  &_Tp1> \'struct _concept_checking\'$_type_var1$_type_var2$_type_var3$_concept { };  &typedef  &_concept_checking$_type_var1$_type_var2$_type_var3$_concept< &$_ns::$_concept <$_type_var1,$_type_var2,$_type_var3>:: &__constraints>  &_concept_checking_typedef$_type_var1$_type_var2$_type_var3$_concept);
    }' unless defined(&_GLIBCPP_CLASS_REQUIRES3);
    eval 'sub _GLIBCPP_CLASS_REQUIRES4 {
        my($_type_var1, $_type_var2, $_type_var3, $_type_var4, $_ns, $_concept) = @_;
	    eval q( &typedef  &void ($_ns::$_concept <$_type_var1,$_type_var2,$_type_var3,$_type_var4>::*  &_func$_type_var1$_type_var2$_type_var3$_type_var4$_concept)();  &template < &_func$_type_var1$_type_var2$_type_var3$_type_var4$_concept  &_Tp1> \'struct _concept_checking\'$_type_var1$_type_var2$_type_var3$_type_var4$_concept { };  &typedef  &_concept_checking$_type_var1$_type_var2$_type_var3$_type_var4$_concept< &$_ns::$_concept <$_type_var1,$_type_var2,$_type_var3,$_type_var4>:: &__constraints>  &_concept_checking_typedef$_type_var1$_type_var2$_type_var3$_type_var4$_concept);
    }' unless defined(&_GLIBCPP_CLASS_REQUIRES4);
    eval 'sub _GLIBCPP_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT {
        my($_OP,$_NAME) = @_;
	    eval q( &template < &class  &_First,  &class  &_Second> \'struct _NAME\' {  &void  &__constraints() { ( &void) &__constraints_(); }  &bool  &__constraints_() {  &return  &__a $_OP  &__b; }  &_First  &__a;  &_Second  &__b; });
    }' unless defined(&_GLIBCPP_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT);
    eval 'sub _GLIBCPP_DEFINE_BINARY_OPERATOR_CONSTRAINT {
        my($_OP,$_NAME) = @_;
	    eval q( &template < &class  &_Ret,  &class  &_First,  &class  &_Second> \'struct _NAME\' {  &void  &__constraints() { ( &void) &__constraints_(); }  &_Ret  &__constraints_() {  &return  &__a $_OP  &__b; }  &_First  &__a;  &_Second  &__b; });
    }' unless defined(&_GLIBCPP_DEFINE_BINARY_OPERATOR_CONSTRAINT);
    undef(&_GLIBCPP_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT) if defined(&_GLIBCPP_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT);
    undef(&_GLIBCPP_DEFINE_BINARY_OPERATOR_CONSTRAINT) if defined(&_GLIBCPP_DEFINE_BINARY_OPERATOR_CONSTRAINT);
    undef(&_IsUnused) if defined(&_IsUnused);
}
1;
