require '_h2ph_pre.ph';

no warnings qw(redefine misc);

unless(defined(&_GLIBCXX_REFWRAP_H)) {
    eval 'sub _GLIBCXX_REFWRAP_H () {1;}' unless defined(&_GLIBCXX_REFWRAP_H);
    if((defined(&__cplusplus) ? &__cplusplus : undef) < 201103) {
	require 'bits/c++0x_warning.ph';
    } else {
	require 'bits/move.ph';
	require 'bits/invoke.ph';
	require 'bits/stl_function.ph';
	eval 'sub _GLIBCXX_MEM_FN_TRAITS2 {
	    my($_CV, $_REF, $_LVAL, $_RVAL) = @_;
    	    eval q( &template< &typename  &_Res,  &typename  &_Class,  &typename...  &_ArgTypes> \'struct _Mem_fn_traits\'< &_Res ( &_Class::*)( &_ArgTypes...) $_CV $_REF> :  &_Mem_fn_traits_base< &_Res, $_CV  &_Class,  &_ArgTypes...> {  &using  &__vararg =  &false_type; };  &template< &typename  &_Res,  &typename  &_Class,  &typename...  &_ArgTypes> \'struct _Mem_fn_traits\'< &_Res ( &_Class::*)( &_ArgTypes... ...) $_CV $_REF> :  &_Mem_fn_traits_base< &_Res, $_CV  &_Class,  &_ArgTypes...> {  &using  &__vararg =  &true_type; };);
	}' unless defined(&_GLIBCXX_MEM_FN_TRAITS2);
	eval 'sub _GLIBCXX_MEM_FN_TRAITS {
	    my($_REF, $_LVAL, $_RVAL) = @_;
    	    eval q( &_GLIBCXX_MEM_FN_TRAITS2( , $_REF, $_LVAL, $_RVAL)  &_GLIBCXX_MEM_FN_TRAITS2( &const , $_REF, $_LVAL, $_RVAL)  &_GLIBCXX_MEM_FN_TRAITS2( &volatile , $_REF, $_LVAL, $_RVAL)  &_GLIBCXX_MEM_FN_TRAITS2( &const  &volatile, $_REF, $_LVAL, $_RVAL));
	}' unless defined(&_GLIBCXX_MEM_FN_TRAITS);
	if((defined(&__cplusplus) ? &__cplusplus : undef) > 201402) {
	}
	undef(&_GLIBCXX_MEM_FN_TRAITS) if defined(&_GLIBCXX_MEM_FN_TRAITS);
	undef(&_GLIBCXX_MEM_FN_TRAITS2) if defined(&_GLIBCXX_MEM_FN_TRAITS2);
	if((defined(&__cplusplus) ? &__cplusplus : undef) <= 201703) {
	}
	if((defined(&__cplusplus) ? &__cplusplus : undef) <= 201703) {
	}
	if((defined(&__cplusplus) ? &__cplusplus : undef) > 201703) {
	}
	if((defined(&__cpp_deduction_guides) ? &__cpp_deduction_guides : undef)) {
	}
    }
}
1;
