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 { 21 }; 22 23 template <class T> 24 void test(T & t)25test(T& t) 26 { 27 std::reference_wrapper<T> r(t); 28 T& r2 = r; 29 assert(&r2 == &t); 30 } 31 f()32void f() {} 33 main()34int main() 35 { 36 void (*fp)() = f; 37 test(fp); 38 test(f); 39 functor1 f1; 40 test(f1); 41 int i = 0; 42 test(i); 43 const int j = 0; 44 test(j); 45 } 46