perfect-forwarding

Почему компилятор не может вывести параметр шаблона для std::forward? Я имею в виду: #include <memory> #include <iostream> struct X{}; struct A{ A( const X& ) { std::cout << "cpy ctorn"; } A( X&& ) { std::cout << "move ctorn"; } }; X foo() { return {}; } temp...

Когда я сижу на заседаниях Комитета по стандартам C++, они обсуждают плюсы и минусы удалениянаследующих конструкторов , поскольку ни один поставщик компилятора еще не реализовал его (смысл в том, что пользователи не просили об этом). Позвольте мне быстро напомнить всем, что такое наследующие конструкторы: ...

Я протестировал семантику перемещения в C++11. Я написал класс с конструктором move. class DefaultConstructor { public: DefaultConstructor(std::vector<int> test) : m_vec(std::forward<std::vector<int>>(test)) { }; DefaultConstructor(DefaultConstructor &&def)...

Очевидно, что можно передать ссылку rvalue в конструктор std::thread. Моя проблема заключается в определении этого конструктора в cppreference. Он говорит, что этот конструктор: template< class Function, class... Args > explicit thread( Function&& f, Args&&... args ); Создает новы...

почему нет std::make_unique шаблон функции в стандартной библиотеке C++11? Я нахожу std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3)); немного многословен. Разве не было бы намного приятнее следующее? auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3); это скрывае...

C++0x показывает пример использования std::forward: template<class T> void foo(T&& arg) { bar(std::forward<T>(arg)); } когда выгодно использовать std::forward всегда? кроме того, он требует, чтобы использовать && в объявлении параметров он действителен во всех случаях? Я дум...

Я наблюдал за Скоттом Мейерсом говорить на универсальные ссылки С конференции C++ и за ее пределами 2012 года, и все имеет смысл до сих пор. Тем не менее, член аудитории задает вопрос примерно через 50 минут, о котором мне тоже было интересно. Мейерс говорит, что его не волнует ответ, потому что он неидиомати...

рассмотрим класс X С N переменные-члены, каждый из некоторых копировать и движимое тип, и N соответствующий сеттера. В C++98 определение X скорее всего, будет выглядеть примерно так: class X { public: void set_a(A const& a) { _a = a; } void set_b(B const& b) { _b = b; } ... private: ...