1
这里有一段非常简单的代码,使用boost::spirit::karma
产生的graphviz的圆点语言格式输出:Boost :: spirit :: karma:重复在重复或kleene之星中不起作用?
#include <iostream>
#include <iterator>
#include <vector>
#include <boost/spirit/include/karma.hpp>
using namespace std;
int main() {
vector<int> v{0,1,2,3};
unsigned count = 17;
{
namespace karma = boost::spirit::karma;
karma::generate(ostream_iterator<char>(cout), *(karma::duplicate['c' << karma::int_ << '_' << karma::lit(count) << "[xlabel=" << karma::int_ << "];\n"]), v);
}
return 0;
}
我希望它可以产生:
c0_17[xlabel=0];
c1_17[xlabel=1];
c2_17[xlabel=2];
c3_17[xlabel=3];
相反,它产生:
c0_17[xlabel=1];
c2_17[xlabel=3];
这意味着duplicate[]
指令在kleene恒星中完全没有效果。我也尝试了repeat[]
指令,但这不起作用。
我在做什么错?我正在使用boost版本1.53.0。我用g++
4.7和clang++
3.2编译了代码,两者都产生了相同的结果。