Add*_*ddy 6 c++ boost boost-test
请考虑以下代码:
BOOST_DATA_TEST_CASE(
sampleTest,
(data::make(1) ^ data::make(2)) + (data::make(3) ^ data::make(4)),
var1,
var2)
{
std::cout << var1 << "," << var2 << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
我期望的输出是:
1,2
3,4
Run Code Online (Sandbox Code Playgroud)
但是,var1似乎是腐败的:
$> ./MyTests --run_test=Tests/sampleTest
Running 2 test cases...
202875304,2
202875304,4
*** No errors detected
$> ./MyTests --run_test=Tests/sampleTest
Running 2 test cases...
83976616,2
83976616,4
*** No errors detected
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?
那是一个错误。长话短说:请将其报告给库维护人员。
\n\n事实上,该zip操作返回一个元组std::tuple<int const&, int const&>:
尽管数据集本身当时处于正常活动状态,但元组是在join操作中通过引用返回的...:
sample const& operator*() const { return m_first_size > 0 ? *m_it1 : *m_it2; }\nRun Code Online (Sandbox Code Playgroud)\n\n正确的解决方法是将数据集概念扩展为不仅具有::sample类型\xc2\xb9,而且还具有::reference类型。这是一个相当具有侵入性的改变。
\xc2\xb9 奇怪的是此时没有记录
\n