1 2 3 4 5 6 7 8 9 10 11 12 | #include <memory> using std::shared_ptr; class A {}; class B {}; int main() { shared_ptr<A> a; shared_ptr<const B> pb = a; return 0; } |
I2luY2x1ZGUgPG1lbW9yeT4KdXNpbmcgc3RkOjpzaGFyZWRfcHRyOwoKY2xhc3MgQSB7fTsKY2xhc3MgQiB7fTsKCmludCBtYWluKCkgewogICAgc2hhcmVkX3B0cjxBPiBhOwogICAgc2hhcmVkX3B0cjxjb25zdCBCPiBwYiA9IGE7CgogICAgcmV0dXJuIDA7Cn0=
In file included from /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/../../../../include/c++/4.5.1/bits/shared_ptr.h:52:0,
from /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/../../../../include/c++/4.5.1/memory:101,
from prog.cpp:1:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.1/../../../../include/c++/4.5.1/bits/shared_ptr_base.h: In constructor 'std::__shared_ptr<_Tp, _Lp>::__shared_ptr(const std::__shared_ptr<_Tp1, _Lp>&) [with _Tp1 = A, _Tp = const B, __gnu_cxx::_Lock_policy _Lp = (__gnu_cxx::_Lock_policy)2u]':
/usr/lib/gcc/i686-pc-linux-gnu/4.5.1/../../../../include/c++/4.5.1/bits/shared_ptr.h:174:65: instantiated from 'std::shared_ptr<_Tp>::shared_ptr(const std::shared_ptr<_Tp1>&) [with _Tp1 = A, _Tp = const B]'
prog.cpp:9:30: instantiated from here
/usr/lib/gcc/i686-pc-linux-gnu/4.5.1/../../../../include/c++/4.5.1/bits/shared_ptr_base.h:579:51: error: cannot convert 'A* const' to 'const B*' in initialization
-
result: Compilation error (maybe you wish to see an example for C++11)


