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); }
'\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 );