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