namespace std {
namespace tr1 {
// CALLABLE OBJECT RETURN TYPES
template <class Ty> struct result_of;
// REFERENCE WRAPPERS
template <class Ty>
struct reference_wrapper;
template <class Ty>
reference_wrapper<const Ty> cref(const Ty&);
template <class Ty>
reference_wrapper<const Ty> cref(reference_wrapper<Ty>);
template <class Ty>
reference_wrapper<Ty> ref(Ty&);
template <class Ty>
reference_wrapper<Ty> ref(reference_wrapper<Ty>);
// FUNCTION OBJECT WRAPPERS
class bad_function_call;
template<class Fty>
class function;
template<class Fty>
bool operator==(const function<Fty>&, null_ptr_type npc);
template<class Fty>
bool operator==(null_ptr_type npc, const function<Fty>&);
template<class Fty>
bool operator!=(const function<Fty>&, null_ptr_type npc);
template<class Fty>
bool operator!=(null_ptr_type npc, const function <Fty>&);
template<class Fty>
void swap(function<Fty>& f1, function<Fty>& f2);
// ENHANCED MEMBER POINTER ADAPTER
template <class Ret, class Ty>
unspecified mem_fn(Ret Ty::*);
// ENHANCED BINDERS
template <class Fty,
class T1, class T2, ..., class TN>
unspecified bind(Fty, T1, T2, ..., TN);
template <class Ret, class Fty,
class T1, class T2, ..., class TN>
unspecified bind(Fty, T1, T2, ..., TN);
template <class R, class Ty,
class T1, class T2, ..., class TN>
unspecified bind(R Ty::*, T1, T2, ..., TN);
template <class Ret, class R, class Ty,
class T1, class T2, ..., class TN>
unspecified bind(R Ty::*, T1, T2, ..., TN);
template <class Ty> struct is_placeholder;
template <class Ty> struct is_bind_expression;
namespace placeholders {
extern unspecified _1;
} // placeholders
} };
Callable object return types are discussed in Section 6.4; reference wrappers in Chapter 8; function object wrappers in Chapter 9; the enhanced member pointer adapter in Chapter 7; and enhanced binders in Chapter 10.