作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试设计一个可变参数模板,它采用参数包(即字符)并将这些字符立即插入到 cout 中。我想象我可以使用一个名为 PrintChars 的结构,并进行某种模板递归以到达参数包中的每个参数。我已经在运行时成功地做到了这一点,但现在我想在编译时做到这一点。例如,我想调用以下模板在终端中打印“foo”。
cout << PrintChars<'f', 'o', 'o'>()
你有什么想法吗?谢谢。
最佳答案
这只是一个处理参数包的简单练习。我的PrintChars<...>
实际上没有任何状态,它只是传递参数包。
#include <iostream>
using namespace std;
template<char... s>
struct PrintChars {};
std::ostream& operator<< (std::ostream& o, const PrintChars<>&)
{
return o;
}
template<char head, char... tail>
std::ostream& operator<< (std::ostream& o, const PrintChars<head, tail...>& pc)
{
o << head << PrintChars<tail...>();
return o;
}
int main() {
cout << PrintChars<'f', 'o', 'o'>();
return 0;
}
这里唯一的“元编程”是创建正确嵌套的 operator<<
打电话。
关于c++ - 将模板参数插入 ostream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28797388/
我是一名优秀的程序员,十分优秀!