Причем, даже в std::vector есть два варианта:
void push_back(const value_type& __x) #if __cplusplus >= 201103L void push_back(value_type&& __x)
это тоже явно неспроста
Завтра тоже гляну по внимательнее. Думаю, что они для лучшей скорости работы специализированную функцию оставили.
Степ, для интереса попробуй выпилить из контейнеров операторы const &, а оставь только &&. И скомпиляй
Завтра по внимательнее гляну вывод, но мое мнение по контейнерам врядли изменится.
Там не совсем правильно реализованы методы с &&. Нужно в некоторых местах вместо std::move использовать std::forward. И кажется, дизайн классов не совсем готов к семантике перемещения.
Сегодня переделал PIThreadPoolExecutor и PIBlockingDequeue. На сколько я успел убедиться, классы полностью поддерживают обе семантики. По идее, код, использующий эти классы, никак не должен меняться.