Я понял, что следующие компилируются в GCC 4.7:
#include <memory>
int main() {
std::shared_ptr<int> p;
p = 0;
}
Однако нет оператора присваивания из int
или из int*
, а также нет неявного конструктора ни из int
, ни из int*
. Есть конструктор из int*
, но он явный. Я проверил реализацию стандартной библиотеки, и конструктор действительно явный, и никаких подозрительных операторов присваивания не видно.
Программа на самом деле хорошо -сформирована или GCC издевается надо мной?