language: C++ 4.7.2 (gcc-4.7.2)
date: 1048 days 21 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
using namespace std;
 
struct A { int x; virtual int f() { return 1; } };
struct B : public A { int y; int f() { return 2; } };
 
template <class T>
void foo()
{
  B b;
  T a=b;
  cout << a.f() << endl;
}
 
template <class T>
void bar()
{
  B b;
  b.x=0;
  T a=b;
  a.x=2;
  cout << b.x << endl;
}
 
int main()
{
  cout << "nonref\n";
  foo<A>();
  bar<A>();
  cout << "ref\n";
  foo<A&>();
  bar<A&>();
  return 0;
}