Как преобразовать std :: vector <unsigned char> в vector <char> без копирования?

Я не былне могу найти этот вопрос, и этоэто настоящая проблема, ям лицом.

У меня есть утилита загрузки файлов, которая возвращаетstd::vector содержащий все содержимое файла. Однако функция обработки требует массива смежныхchar (и этоне могу быть изменено - этофункция библиотеки). Так как класс, которыйс помощью функции обработки сохраняет копию данных в любом случае, я хочу сохранить ее какvector, Вот'код, который может быть немного более иллюстративным.

std::vector LoadFile (std::string const& path);

class Processor {
    std::vector cache;
    void _dataOperation(std::vector const& data);

public:
    void Process() {
        if (cache.empty())
            // here's the problem!
            cache = LoadFile("file.txt");

        _dataOperation(cache);
    }
};

Этот код некомпилировать, потому что (очевидно)Нет подходящего преобразования. Однако мы можем быть уверены, что временный вектор будет занимать такой же объем памяти (IOW)sizeof(char) == sizeof(unsigned char)

Наивным решением было бы перебрать содержимое временного и разыграть каждого персонажа. Я знаю, что в нормальном случаеoperator= (T&&) будет называться.

В моей ситуации этобезопасно переосмысливать преобразование, потому что я уверен, что буду читать только символы ASCII. Любой другой персонаж будет пойман в_dataOperation тем не мение.

Итак, мой вопрос:Как правильно и безопасно преобразовать временный вектор так, чтобы не было копирования?

Если это не такВозможно, я бы предпочел безопасный способ копирования, а не небезопасное копирование. Я также мог бы изменитьLoadFile вернуть либоvector или же .vector

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

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