Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct FunctorClassFactory {
- template <typename Callback>
- static FunctorClass AsCallback(Callback callback) {
- return FunctorClass(std::move(callback)); // Конструктор FunctorClassFactory::AsCallback
- }
- };
- TEST_CASE("CancelDestroys") {
- {
- Defer cleanup = FunctorClassFactory::AsCallback(DestructionCounter()); // Валится вот здесь
- destruction_count = 0;
- std::move(cleanup).Cancel();
- REQUIRE(destruction_count == 1); // Cancel destroys
- }
- REQUIRE(destruction_count == 1); // Canceled cleanup does not double destroy
- }
- // Ошибка
- /*
- error: use of deleted function ‘FunctorClass::FunctorClass(const FunctorClass&)’
- 24 | Defer(Callback callback) : callback_buffer_(callback) {}
- | ^~~~~~~~~~~~~~~~~~~~~~~~~~
- /home/timofei/cpp-advanced-hse/tasks/errors/defer/test.cpp:107:5: note: declared here
- 107 | FunctorClass(const FunctorClass&) = delete; // TODO пытается вызвать это
- | ^~~~~~~~~~~~
- */
- // Не понимаю, почему вызывается конструктор копирования, а не мув конструктор
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement