Вам не хватает перенести ваш входной аргумент на следующий получатель сказал-же. Это:
ctx->setConfigOverrides(config);
должно быть так:
ctx->setConfigOverrides(std:move(config));
Для правильной пересылки требуется это. Тот факт, что config
был передан как rval-ссылка, не означает, что он не конкретен под капотом. Отличная статья о cppreference хорошо объясняет эту концепцию (не удивительно, этот сайт действительно потрясающий, и его следует добавить в закладки, если вы этого еще не сделали). И если вы думаете, что синтаксис сложен, он становится еще хуже с идеальной пересылкой через вывод шаблона. Спасибо, std::forward<>
делает всю тяжелую работу там.
Во всяком случае, этого не хватало. Надеюсь, это поможет.