diff options
author | Jason Merrill <jason@gcc.gnu.org> | 2000-12-09 14:03:24 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2000-12-09 14:03:24 -0500 |
commit | b1c1090273417dd1a2c46c1a02501199182c3504 (patch) | |
tree | 046c19372cdfa032da73f332f85817179dbd2067 /gcc | |
parent | 5e818b935158ec6f4b03e583c7e9a3c2d986fd9e (diff) | |
download | gcc-b1c1090273417dd1a2c46c1a02501199182c3504.zip gcc-b1c1090273417dd1a2c46c1a02501199182c3504.tar.gz gcc-b1c1090273417dd1a2c46c1a02501199182c3504.tar.bz2 |
Clean up copy-initialization in overloading code.
* call.c (build_user_type_conversion_1): Die if we are asked to
convert to the same or a base type.
(implicit_conversion): Avoid doing so. Lose reference binding code.
(convert_like_real): Treat BASE_CONV and RVALUE_CONV as implicit
direct-initialization. Also do direct-init part of copy-init.
(build_user_type_conversion): Don't provide context to convert_like.
* cvt.c (ocp_convert): build_user_type_conversion will now provide
the constructor call for copy-init.
From-SVN: r38159
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/auto_ptr.C | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/auto_ptr.C b/gcc/testsuite/g++.old-deja/g++.pt/auto_ptr.C index dd5b988..c91d9c7 100644 --- a/gcc/testsuite/g++.old-deja/g++.pt/auto_ptr.C +++ b/gcc/testsuite/g++.old-deja/g++.pt/auto_ptr.C @@ -8,9 +8,9 @@ template<typename X> struct auto_ptr { typedef X element_type; explicit auto_ptr(X* p =0) throw() : px(p) {} - auto_ptr(auto_ptr& r) throw() : px(r.release()) {} + auto_ptr(auto_ptr& r) throw() : px(r.release()) {} // ERROR - candidate template<typename Y> - auto_ptr(auto_ptr<Y>& r) throw() : px(r.release()) {} + auto_ptr(auto_ptr<Y>& r) throw() : px(r.release()) {}// ERROR - candidate auto_ptr& operator=(auto_ptr& r) throw() { reset(r.release()); @@ -29,7 +29,7 @@ template<typename X> struct auto_ptr { X* release() throw() { X* p=px; px=0; return p; } void reset(X* p=0) throw() { if (px != p) delete px, px = p; } - auto_ptr(auto_ptr_ref<X> r) throw() : px(r.py) {} + auto_ptr(auto_ptr_ref<X> r) throw() : px(r.py) {} // ERROR - candidate template<typename Y> operator auto_ptr_ref<Y>() throw() { return auto_ptr_ref<Y>(release()); } @@ -50,5 +50,5 @@ int main() { auto_ptr<Derived> y(f()); x = y; g(f()); - h(f()); + h(f()); // ERROR - no usable copy ctor } |