Я пытаюсь использовать std:: shared_ptr в clang++ (clang version 3.1 (trunk 143100)), используя libstdС++ (4.6.1). У меня есть небольшая демонстрационная программа:
#include <memory>
int main()
{
std::shared_ptr<int> some(new int);
std::shared_ptr<int> other(some);
return 0;
}
который можно построить с помощью:
clang++ -std=c++0x -o main main.cpp
и выдает следующий вывод ошибки:
main.cpp:6:23: error: call to deleted constructor of 'std::shared_ptr<int>'
std::shared_ptr<int> other(some);
^ ~~~~
/usr/include/c++/4.6/bits/shared_ptr.h:93:11: note: function has been explicitly marked
deleted here
class shared_ptr : public __shared_ptr<_Tp>
По какой-то причине ему нужен конструктор, который удаляется, поскольку предоставляется конструктор перемещения (что является правильным поведением). Но зачем он компилируется с помощью (g++ (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1.)? Кто-нибудь знает, как это исправить?