C++变参模板的使用

编程入门 行业动态 更新时间:2024-10-23 15:30:58

C++变参<a href=https://www.elefans.com/category/jswz/34/1770549.html style=模板的使用"/>

C++变参模板的使用

C17

1.  使用编译器if常量表达式

template<typename T, typename U, typename... Ts>
void syszuxPrint(T arg1, Ts... arg_left)
{std::cout << arg1 << ", ";if constexpr (sizeof...(arg_left) > 0){syszuxPrint(arg_left...);}
}

但是这种方式对于我个人遇到的问题有点不适用,我需要的是第一是数据指针,然后第二个参数、第三个参数是数据的宽高,然后后面才是变参,这样递归处理的话不行

2. C17折叠表达式

template<typename... Ts>
void syszuxPrint(Ts... arg_left){(std::cout<< ... << arg_left) << std::endl;
}int main(int argc, char** argv)
{syszuxPrint(719,7030,"civilnet");
}

上述折叠表达式存在同样的问题

3. 变种折叠表达式

template <typename First, typename... Args>
void syszuxPrint(First first, int iWidth, int iHeight, Args... args)
{std::cout << first  << std::endl;std::cout << iWidth << std::endl;std::cout << iHeight << std::endl;auto printWhiteSpace = [](const auto& arg) { std::cout << " " << arg << std::endl;};(..., printWhiteSpace(args)); // op是,
}

这样可以

更多推荐

C++变参模板的使用

本文发布于:2023-11-17 00:55:21,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1636475.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:模板

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!