将模板参数插入到ostream中
Inserting template parameters into ostream
我正在尝试设计一个可变模板,该模板采用参数包(即字符)并立即将这些字符插入cout中。我想象我可以使用一个名为PrintChars的结构,并进行某种模板递归来访问参数包中的每个参数。我已经成功地在运行时做到了这一点,但现在我想在编译时做到这一点。例如,我想让下面的模板调用在终端中打印"foo"。
cout << PrintChars<'f', 'o', 'o'>()
你有什么想法吗?谢谢
这只是处理参数包的一个简单练习。我的PrintChars<...>
实际上没有任何状态,它只是传递参数包。
http://ideone.com/39HcTG
#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++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 预处理器:插入结构名称中的前一个行号
- 在未初始化映射的情况下,将值插入到映射的映射中
- 如何在c++中只将键插入到bimap的一侧
- ostream过载时的缓冲区冲洗
- 如何将结构插入到集合中并打印集合的成员
- C++json插入数组
- Visual Studio 2019:插入多个C++风格的单行注释
- nlohmann-json将一个数组插入到另一个数组中
- 我的运算符重载是否有效<<(流插入)左操作数不是 ostream
- ostream 插入运算符与其非成员重载之间的关系
- 将模板参数插入到ostream中
- 无法将数字插入到基于 char16_t 的自定义C++ ostream/streambuf
- 标准::unique_ptr ostream 插入器
- 使用指针数组中的对象调用重载的友元 ostream 插入运算符将返回内存地址
- 如何用c++在ostream中插入缓冲区
- 使用std::ostream在每行之前插入文本
- C++流插入运算符的返回类型是否需要是std::ostream
- (从 istream 中提取并插入到 ostream 中)操作:是>><T>操作系统;