namespace std { void __f() {} template class reference_wrapper { public: typedef _Tp type; private: type *__f_; public: reference_wrapper(type &__f) : __f_(&__f) {} // access operator type &() const { return *__f_; } type &get() const { return *__f_; } }; template inline reference_wrapper<_Tp> ref(_Tp &__t) noexcept { return reference_wrapper<_Tp>(__t); } template inline reference_wrapper<_Tp> ref(reference_wrapper<_Tp> __t) noexcept { return ref(__t.get()); } } // namespace std