TEST(VariadicTemplate, VariadicCountTest) {

	auto c = VariadicCount<int>::value;
	EXPECT_EQ(1, c);

	c = VariadicCount<int, double, float>::value;
	EXPECT_EQ(3, c);

	c = VariadicCount<int, double, float, std::string, 
		smart_pointer::Dog>::value;
	EXPECT_EQ(5, c);

	c = numOfVariadic(1, 2.0, 3.0, "hello", smart_pointer::Dog("Alves"));
	EXPECT_EQ(5, c);

}
Ejemplo n.º 2
0
		'\n', dog, '\n');
END_TEST;

BEGIN_TEST(VariadicTemplate, VariadicCountTest, @);

	auto c = VariadicCount<int>::value;
	EXPECT_EQ(1, c);

	c = VariadicCount<int, double, float>::value;
	EXPECT_EQ(3, c);

	c = VariadicCount<int, double, float, std::string, 
		smart_pointer::Dog>::value;
	EXPECT_EQ(5, c);

	c = numOfVariadic(1, 2.0, 3.0, "hello", smart_pointer::Dog("Alves"));
	EXPECT_EQ(5, c);
END_TEST;

BEGIN_TEST(VariadicTemplate, TemplateVariadicTemplate, @);
	Container<int, A>;
	Container<int, A, B>;
	//Container<A, B>;	//error: A is a template class. need type for 1st param.
END_TEST;

BEGIN_TEST(VariadicTemplate, PerfectForwardUsingVariadicTemplate, @);
	Fa fa;
	Fb fb;
	auto mul = build<MultiTypes>(fa, fb);
    //Fa fa1 = mul.t_;
    EXPECT_EQ( &mul.t_, &fa );