1 //===----------------------------------------------------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is dual licensed under the MIT and the University of Illinois Open 6 // Source Licenses. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 // <functional> 11 12 // reference_wrapper 13 14 // operator T& () const; 15 16 #include <functional> 17 #include <cassert> 18 19 class functor1 20 : public std::unary_function<int, char> 21 { 22 }; 23 24 template <class T> 25 void test(T & t)26test(T& t) 27 { 28 std::reference_wrapper<T> r(t); 29 T& r2 = r; 30 assert(&r2 == &t); 31 } 32 f()33void f() {} 34 main()35int main() 36 { 37 void (*fp)() = f; 38 test(fp); 39 test(f); 40 functor1 f1; 41 test(f1); 42 int i = 0; 43 test(i); 44 const int j = 0; 45 test(j); 46 } 47