по значению.

ться на мой сумасшедшийАвтоархив... (цитируя важные биты оттуда:

class AutoArray
{
    void * buffer;
public:
    //Creates a new empty AutoArray
    AutoArray();
    //std::auto_ptr copy semantics
    AutoArray(AutoArray&); //Note it can't be const because the "other" reference
                           //is null'd on copy...
    AutoArray& operator=(AutoArray);
    ~AutoArray();
    //Nothrow swap
    // Note: At the moment this method is not thread safe.
    void Swap(AutoArray&);
};

)

Во всяком случае, пытаясь реализовать конструктор копирования. Есть фрагмент кода клиента (еще не зафиксированный в bitbucket, потому что он не будет собран), который выглядит следующим образом:

AutoArray NtQuerySystemInformation(...) { ... };

AutoArray systemInfoBuffer = NtQuerySystemInformation(...);

Это терпит неудачу, потому что конструктор копирования принимает неconst ссылка в качестве аргумента .... но я не вижу, как вы могли бы изменить конструктор копирования, чтобы взятьconst ссылка, учитывая, что источникAutoArray используется в назначении изменен (и, следовательно, не будетconst). Конечно, вы не можете изменять вещи так, чтобы они передавались по значению, потому что это конструктор копирования, и это был бы бесконечный цикл!

Если бы я использовалauto_ptr, это будет действительным:

std::auto_ptr NtQuerySystemInformation(...) { ... };

std::auto_ptr systemInfoBuffer = NtQuerySystemInformation(...);

Как тогда, может, класс сauto_ptrсемантика копирования возможна?

Ответы на вопрос(0)

Ваш ответ на вопрос