Должны ли мы всегда всегда STD :: Перестайте универсальный справочный аргумент, даже если он ненужный?C++

Программы на C++. Форум разработчиков
Anonymous
Должны ли мы всегда всегда STD :: Перестайте универсальный справочный аргумент, даже если он ненужный?

Сообщение Anonymous »

Рассмотрим следующий код: < /p>

Код: Выделить всё

#include 

auto f1(auto&& v) {
return v;
}

auto f2(auto&& v) {
return std::forward(v);
}

int main() {
return f1(std::string("hello")).size() + f2(std::string("hello")).size();
}
clang будет генерировать тот же код сборки для f1 и f2 . Однако

[*] Согласно рекомендациям C ++ Core, F2 рекомендуется;

Согласно P0527R1, F1 достаточно, так как C ++ 23. Мы все еще всегда std :: forward универсальный справочный аргумент? или основные рекомендации C ++ должны быть обновлены?

Подробнее здесь: https://stackoverflow.com/questions/796 ... n-if-unnec

Вернуться в «C++»