Результаты поиска по запросу "move-semantics"

1 ответ

Возвращение std :: move (f) в std :: for_each

Я пишу реализацию стандартной библиотеки C ++ для изучения. Стандарт C ++ 11 говорит, чтоfor_each возвращаетсяstd::move(f). template <class InputIterator, class Function> Function for_each(InputIterator first, InputIterator last, Function f); ...

2 ответа

@ он хорошо, я сделал это сам. Глядя на ваш отзыв о

тим, у меня есть подвижный и не копируемый объект, и у меня есть многоиндексный массив boost с индексом random_access. Мне нужно переместить мой объект за пределы массива, но я не могу найти метод, который бы дал мне ссылку на rvalue / lvalue ...

3 ответа

Надеюсь, что это помогло ... исключения дикий зверь, чтобы приручить :)

роизойдет в следующем стандарте C ++ 0x, когда в конструкторе перемещения будет возникать исключение? Останется ли оригинальный объект? или оба объекта находятся в неопределенном состоянии? Какие гарантии дает язык?

ТОП публикаций

5 ответов

 перемещение может быть настолько эффективным, насколько уже есть копия.

вая высокое качество современных компиляторов в отношении оптимизации возвращаемого значения (как RVO, так и NRVO), мне было интересно, для какой сложности класса имеет смысл начинать добавлять конструкторы перемещения и операторы присваивания ...

1 ответ

Почему Rust допускает мутацию через поле ссылки с использованием неизменяемой привязки?

аю второе издание Rust Book и нашел следующий пример в разделе итераторов: let v1 = vec![1, 2, 3]; let v1_iter = v1.iter(); for val in v1_iter { println!("Got: {}", val); }Почему компилятор не жалуется, чтоv1_iter неизменен? В книге говорится, ...

4 ответа

VS2010 не делает этого, потому что они не были Стандартными во время реализации.

стой программист. Мои переменные членов класса чаще всего состоят из POD-типов и STL-контейнеров. Из-за этого мне редко приходится писать операторы присваивания или конструкторы копирования, поскольку они реализованы по умолчанию. Добавьте к ...

3 ответа

и позволить вызывающей стороне обернуть его в потоке?

аю, я пойду прямо в это и начну с кода: #include <iostream> #include <fstream> #include <string> class test : public std::ofstream { public: test(const std::string& filename) { this->open(gen_filename(filename)); }; test(const test&) = delete; ...

6 ответов

Переместить элемент std priority_queue в C ++ 11

Минимальный рабочий пример. #include <cassert> #include <list> #include <queue> //#define USE_PQ struct MyClass { const char* str; MyClass(const char* _str) : str(_str) {} MyClass(MyClass&& src) { str = src.str; src.str = nullptr; } ...

1 ответ

Lvalue для rvalue ссылки привязки

Компилятор продолжает жаловаться, что я пытаюсь связать lvalue со ссылкой на rvalue, но не могу понять, как это сделать. Я новичок в C ++ 11, перемещаю семантику и т. Д., Поэтому, пожалуйста, потерпите меня. У меня есть эта функция: template ...

5 ответов

 объект. Это одна из причин, почему не имеет смысла иметь оператор присваивания для полиморфных объектов. Обратите внимание, что Бьярне Страуструп считает исторической случайностью то, что оператор присваивания предоставляется для каждого пользовательского класса по умолчанию.

мог спать прошлой ночью и начал думать оstd::swap, Вот знакомая версия C ++ 98: template <typename T> void swap(T& a, T& b) { T c(a); a = b; b = c; }Если пользовательский классFoo использует внешние ресурсы, это неэффективно. Общая идиома - ...