gpt4 book ai didi

c++ - 使用模板转换特定类型的参数

转载 作者:行者123 更新时间:2023-11-28 04:57:31 24 4
gpt4 key购买 nike

我想要一个效用函数 U,它在转换特定类型的参数后调用另一个函数 F。参数的具体类型是 vector<LibraryClass>这是固定的。转换来自 vector<LibraryClass>special_vector<LibraryClass> .

调用将如下所示:

vector<LibraryClass> a, c;
OtherType b, d, ...;
U(F, a, b, c, d, ...);

我希望以上等同于:

F(special_vector(a), b, special_vector(c), d, ...);

我真正想要的是一个非常简短的解决方案。你认为实现这个最简单的方法是什么?我只对方法感兴趣,对代码不感兴趣。

最佳答案

充实什么 Sam Varshavchik

template<typename T>
T&& transform(T&& t) { return std::forward<T>(t); }

special_vector<LibraryClass> transform(const std::vector<LibraryClass>& v)
{
return {v};
}

template<typename Fn, typename... Args>
void U(Fn f, Args&&... args)
{
f(std::forward<Args>(transform(args))...);
}

您可能想要为 transform(std::vector<LibraryClass>&&) 添加更多重载以及所有这些,或类型上的 SFINAE。

关于c++ - 使用模板转换特定类型的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46841546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com