【发布时间】:2018-01-04 19:48:47
【问题描述】:
考虑以下代码:
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;
}
我期望的输出是:
1,2
3,4
但是,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
我做错了吗?
【问题讨论】:
-
我在数据集行:
error: returning reference to temporary [-Werror=return-local-addr]上收到警告(被视为错误,因为我使用了-Werror)。您是否使用了较高的警告级别,是否收到任何此类警告? -
@FredLarson 我从来没有收到过警告,但如果我把它变成错误,我确实看到了:
join.hpp:57:58: error: returning reference to local temporary object [-Werror,-Wreturn-stack-address] -
是的,这会产生未定义的行为。我认为这与加入 zips 的结果有关,但我之前没有尝试过数据驱动的测试。
标签: c++ boost boost-test