Я столкнулся с интересной проблемой C ++ 20, где я хочу применить одну и ту же шаблонную функцию к каждому типу, указанному в STD :: Tuple . Вот какой-то псевдокод, чтобы проиллюстрировать идею: < /p>
template
void logType()
{
std::cout
void main()
{
using MyTypes = std::tuple;
tapply([] () {
logType ();
});
}
< /code>
Пока это, кажется, работает как очарование в модульных тестах, но я удивлен, что в стандартной библиотеке нет стандартного способа сделать это. Каким -то образом это похоже на почти наиболее стандартный вариант использования, когда я использовал бы новую шаблонную функцию Lambda, доступную в C ++ 20. < /p>
, так что у меня есть два вопроса для наркоманов шаблонов: < /p>
Я пропустил существующий метод стандартной библиотеки, которая уже показала бы ту же функцию? Кажется, что
std :: Apply
сможет сделать это, начиная с C ++ 23 < /li>
Вы бы порекомендовали более элегантную /стандартную реализацию, совместимую с C ++ 20? < /Li>
< /ul>
Спасибо! < /P>
Подробнее здесь: [url]https://stackoverflow.com/questions/79711543/apply-a-templated-lambda-to-each-type-in-a-stdtuple-c20[/url]
Я столкнулся с интересной проблемой C ++ 20, где я хочу применить одну и ту же шаблонную функцию к каждому типу, указанному в STD :: Tuple . Вот какой-то псевдокод, чтобы проиллюстрировать идею: < /p> [code]template void logType() { std::cout void main() { using MyTypes = std::tuple; tapply([] () { logType (); }); } < /code> Пока это, кажется, работает как очарование в модульных тестах, но я удивлен, что в стандартной библиотеке нет стандартного способа сделать это. Каким -то образом это похоже на почти наиболее стандартный вариант использования, когда я использовал бы новую шаблонную функцию Lambda, доступную в C ++ 20. < /p> , так что у меня есть два вопроса для наркоманов шаблонов: < /p>
Я пропустил существующий метод стандартной библиотеки, которая уже показала бы ту же функцию? Кажется, что std :: Apply сможет сделать это, начиная с C ++ 23 < /li> Вы бы порекомендовали более элегантную /стандартную реализацию, совместимую с C ++ 20? < /Li> < /ul> Спасибо! < /P>