相关疑难解决方法(0)

如何将元组扩展为可变参数模板函数的参数?

考虑具有可变参数模板参数的模板化函数的情况:

template<typename Tret, typename... T> Tret func(const T&... t);
Run Code Online (Sandbox Code Playgroud)

现在,我有一个t价值元组.如何func()使用元组值作为参数调用?我已经阅读了bind()函数对象,call()函数,以及apply()不同的一些现在过时的文档中的函数.GNU GCC 4.4实现似乎call()bind()类中有一个函数,但是关于这个主题的文档很少.

有些人建议使用手写的递归黑客,但可变参数模板参数的真正价值在于能够在上述情况下使用它们.

有没有人有解决方案,或提示在哪里阅读它?

c++ arguments tuples c++11

127
推荐指数
6
解决办法
4万
查看次数

GTest - 不同类型的参数化测试

我想将参数化测试与类型化测试混合在一起。这是我的尝试:

struct X {};

struct Y {};

template <typename T>
struct MyTestFixture: public ::testing::Test
{
    T t;
};

template <typename T, typename Param>
struct MyTestFixtureWithParam : public MyTestFixture<T>, 
                                public ::testing::WithParamInterface<Param>
{
};

using MyTestFixtureWithXandString = MyTestFixtureWithParam<X, std::string>;

TEST_P(MyTestFixtureWithXandString, Test1)
{
}

INSTANTIATE_TEST_CASE_P(Name, MyTestFixtureWithXandString, 
                        ::testing::Values("a", "b"));

using MyTestFixtureWithYandString = MyTestFixtureWithParam<Y, std::string>;

TEST_P(MyTestFixtureWithYandString, Test1)
{

}

INSTANTIATE_TEST_CASE_P(Name, MyTestFixtureWithYandString, 
                        ::testing::Values("a", "b"));
Run Code Online (Sandbox Code Playgroud)

Gtest 是否包含一些混合 TYPED_TEST 和 TEST_P 的宏,或者上面的代码是实现我的目标的唯一方法?

c++ googletest googlemock

5
推荐指数
1
解决办法
3502
查看次数

有没有办法将一对元组剥离为可变参数模板类型或使用可变参数类型实例化某些内容?

我有一个tupleof pairs,其中每对都有一个固定类型和一个变体类型。我想要的是一个变体类型列表或用这些类型定义一个对象(它肯定是用可变参数模板包构造的)。

根据How do I strip a tuple<>back into a variadic template list of types? ,可以用 的构成类型实例化某些东西tuple。但在这种情况下,我不知道这是否可能,如果可能,我不知道该怎么做。

想象一下我有这样的事情:

struct MyFixedType
{ /* ... */ };


using Tuple = std::tuple<
    std::pair<MyFixedType, int>,
    std::pair<MyFixedType, double>,
    std::pair<MyFixedType, std::string>
>;
Run Code Online (Sandbox Code Playgroud)

我有这门课:

template <typename... Ts>
class MyClass
{
};
Run Code Online (Sandbox Code Playgroud)

我要的是申报对象MyClass<int, double, std::string>

注意:虽然这种情况可以使用预处理器或一些宏来处理,但我不允许使用宏。

c++ c++11

5
推荐指数
1
解决办法
57
查看次数

标签 统计

c++ ×3

c++11 ×2

arguments ×1

googlemock ×1

googletest ×1

tuples ×1