Использование std :: shared_ptr с clang ++ и libstdc ++

Я пытаюсь использовать std :: shared_ptr в clang ++ (clang version 3.1 (транк 143100)) с использованием libstdc ++ (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.)? У кого-нибудь есть идеи, как это исправить?

12
задан Bjorn 1 November 2011 в 09:06
поделиться