[Bug c++/86303] New: Constructor is not used for type conversion
zhonghao at pku dot org.cn
gcc-bugzilla@gcc.gnu.org
Mon Jun 25 06:58:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86303
Bug ID: 86303
Summary: Constructor is not used for type conversion
Product: gcc
Version: 8.0.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: zhonghao at pku dot org.cn
Target Milestone: ---
The code is as follow:
struct auto_ptr {
struct auto_ptr_ref { };
auto_ptr(auto_ptr&);
auto_ptr(auto_ptr_ref);
operator auto_ptr_ref();
};
auto_ptr foo();
struct X {
X(auto_ptr);
};
struct Y {
Y(X);
};
Y f(foo());
clang++ accepts the code, but g++ rejects it:
error: cannot bind non-const lvalue reference of type 'auto_ptr&' to an rvalue
of type 'auto_ptr'
Y f(foo());
~~~^~
The code comes from a clang report: https://bugs.llvm.org/show_bug.cgi?id=7055
Eli Friedman constructed the code, and identified that clang and comeau accept
it while g++ rejects it.
More information about the Gcc-bugs
mailing list