diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/overload/reftemp2.C')
-rw-r--r-- | gcc/testsuite/g++.dg/overload/reftemp2.C | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/overload/reftemp2.C b/gcc/testsuite/g++.dg/overload/reftemp2.C new file mode 100644 index 000000000..365d5b13f --- /dev/null +++ b/gcc/testsuite/g++.dg/overload/reftemp2.C @@ -0,0 +1,23 @@ +// DR 391 says that we always bind a reference to the base subobject; it is +// incorrect to call the A copy constructor to initialize the parameter of +// f. + +int fail; + +struct A { + A() { } + A(const A&) { fail = 1; } +}; +struct B : public A { }; +struct X { + operator B() { return B(); } +}; +X x; + +void f (const A&) { } + +int main() +{ + f(x); + return fail; +} |