Cppreference 给出std::forward_as_tuple了以下示例(请参见此处)
#include <iostream>
#include <map>
#include <tuple>
#include <string>
int main()
{
std::map<int, std::string> m;
m.emplace(std::piecewise_construct,
std::forward_as_tuple(10),
std::forward_as_tuple(20, 'a'));
std::cout << "m[10] = " << m[10] << '\n';
// The following is an error: it produces a
// std::tuple<int&&, char&&> holding two dangling references.
//
// auto t = std::forward_as_tuple(20, 'a');
// m.emplace(std::piecewise_construct, std::forward_as_tuple(10), t);
}
Run Code Online (Sandbox Code Playgroud)
简单写有什么好处
m.emplace(std::make_pair(20,std::string(20,'a')));
Run Code Online (Sandbox Code Playgroud) 我想应用参数化测试并具有以下固定装置:
class MyTest: public ::testing::TestWithParam<float> {...};
Run Code Online (Sandbox Code Playgroud)
我想设置两个参数化测试用例,其中一个小参数失败,但较大参数成功。
TEST_P(MyTest, smallParamsFail)
{
auto param = GetParam();
EXPECT_EQ(true, param<1);
}
TEST_P(MyTest, largeParamsSucceed)
{
auto param = GetParam();
EXPECT_EQ(true, param>1);
}
Run Code Online (Sandbox Code Playgroud)
我现在想以较小的值开始测试用例smallParamsFail,以较大的值开始另一个测试用例。不幸的是,我只能像这样参数化整个测试:
INSTANTIATE_TEST_CASE_P(
testLargeParams,
MyTest,
::testing::Values(2.0f, 3.14f));
Run Code Online (Sandbox Code Playgroud)
这将执行两个测试用例,并且在 SmallParamsFail 的情况下显然会崩溃。我需要的是仅在测试用例 largeParamsSucceed 上使用参数 2.0f、3.14f 的 MyTest 实例化。然后使用适当的参数以相同的方式启动其他情况。
我尝试使用上标生成标签,因此使用parse。我似乎不能使用空格,这有效:
GTVol <- 1:10
measuredVol <- 1:10
dat <- data.frame(GTVol, measuredVol)
ggplot(dat, aes(GTVol, measuredVol)) +
geom_point() +
geom_abline(slope=1) +
xlab(parse(text='HarvestedVolume(m^3)')) +
ylab("QSM Volume (m^3)")
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
GTVol <- 1:10
measuredVol <- 1:10
dat <- data.frame(GTVol, measuredVol)
ggplot(dat, aes(GTVol, measuredVol)) +
geom_point() +
geom_abline(slope=1) +
xlab(parse(text='Harvested Volume (m^3)')) +
ylab("QSM Volume (m^3)")
Run Code Online (Sandbox Code Playgroud)
给我以下错误:
Error in parse(text = "Harvested Volume (m^3)") :
<text>:1:11: unexpected symbol
1: Harvested Volume
Run Code Online (Sandbox Code Playgroud)