C ++将派生对象的构造传递给clang中的函数期望库

时间:2019-06-18 20:42:00

标签: c++ clang++

最简单的例子:

struct A {};
struct B : public A {};
void Call(A&) {}
int main() { Call(B()); return 0; }

这在MSVC中进行。 c 7.0.0-3无法解决此问题:

test.cpp:4:14: error: no matching function for call to 'Call'
int main() { Call(B()); return 0; }
             ^~~~
test.cpp:3:6: note: candidate function not viable: no known conversion from 'B' to 'A &' for 1st argument
void Call(A&) {}
     ^

为什么?

我希望构造函数被调用,该对象由main()保留在内存中,引用将被函数调用接受,然后一旦执行Call()函数,该对象将被销毁。相反,它根本无法编译。

0 个答案:

没有答案