Наивная функция выглядит примерно так.
Код: Выделить всё
template
void FooNaive( const std::vector& vec )
{
std::vector vecAsFloat;
if constexpr ( std::is_same_v )
vecAsFloat = vec; // expensive copy I want to avoid
else
{
vecAsFloat.reserve( vec.size() );
for ( const auto& s : vec )
vecAsFloat.push_back( ConvertExpensiveStruct( s ) ); //
Подробнее здесь: [url]https://stackoverflow.com/questions/79262104/if-constexpr-to-initiallize-a-const-reference[/url]
Мобильная версия