Могу ли я назначить 0 общему _указателю? Почему?

Я понял, что следующие компилируются в GCC 4.7:

#include <memory>

int main() {
    std::shared_ptr<int> p;
    p = 0;
}

Однако нет оператора присваивания из intили из int*, а также нет неявного конструктора ни из int, ни из int*. Есть конструктор из int*, но он явный. Я проверил реализацию стандартной библиотеки, и конструктор действительно явный, и никаких подозрительных операторов присваивания не видно.

Программа на самом деле хорошо -сформирована или GCC издевается надо мной?

12
задан R. Martinho Fernandes 9 August 2012 в 17:14
поделиться