group-telegram.com/cxx95/32
Create:
Last Update:
Last Update:
#creepy и #video
Тупое нововведение в C++23: копирование с помощью auto{}
Что нужно сделать, чтобы скопировать объект, особенно в шаблонном коде? Зная, что объявление переменной с типом auto
это всегда копия, можно сделать так:
void func(const auto& something) {Что, если мы не хотим объявлять новый объект, а создать копию "на месте"? Тогда можно сделать так (decay нужен потому что исходный тип может быть ссылочным и/или иметь cv-квалификаторы):
auto copy = something;
use(copy);
}
void func(const auto& something) {А что, если мы считаем что C++ еще недостаточно сложный? То в С++23 теперь можно делать так:
use(std::decay_t<decltype(something)>{copy});
}
void func(const auto& something) {Эту информацию я узнал из канала "C++ Weekly": https://www.youtube.com/watch?v=5zVQ50LEnuQ В видео приводится не очень убедительный "мотивационный пример".
use(auto{copy});
}
Комментарии к видео интереснее самого видео, все люди ловят фейспалм и пишут комментарии как "в чем вообще проблема копировать как раньше", "почему не сделали в виде
std::copy
", и прочее. В этом я с ними согласен!BY C++95

Share with your friend now:
group-telegram.com/cxx95/32