copy_ctor.pass.cpp revision bc8d3f97eb5c958007f2713238472e0c1c8fe02c
1//===----------------------------------------------------------------------===//
2//
3// ��������������������The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// <functional>
11
12// reference_wrapper
13
14// reference_wrapper(const reference_wrapper<T>& x);
15
16#include <functional>
17#include <cassert>
18
19class functor1
20    : public std::unary_function<int, char>
21{
22};
23
24template <class T>
25void
26test(T& t)
27{
28    std::reference_wrapper<T> r(t);
29    std::reference_wrapper<T> r2 = r;
30    assert(&r2.get() == &t);
31}
32
33void f() {}
34
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