小编Sto*_*der的帖子

SQLAlchemy“有序”

我想用 SQLAlchemy 翻译以下查询,但我在文档中没有找到有关此主题的任何内容。

SELECT * FROM table_persons, jsonb_array_elements(data->'persons') WITH ORDINALITY as persons (data, n);
Run Code Online (Sandbox Code Playgroud)

其中数据列具有 JSONB 类型。

python postgresql sqlalchemy

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

将指向类的成员传递为模板参数

我想编写一个将进程应用于类成员的函数.以下代码正在运行:

class AA
{
public:
    AA(){};
    ~AA(){};
    std::string type="AA";
};

class BB
{
public:
    BB(){};
    ~BB(){};
    template <typename T, typename TT>
    void test(T& a, TT(T::*memberPtr))
    {
        std::cout<<"test: "<<(a.*memberPtr)<<std::endl;
    }
    std::string type="BB";
};

int main()
{
    AA a;
    BB b;
    b.test(a, &AA::type);
}
Run Code Online (Sandbox Code Playgroud)

但是我在编译时知道所有内容所以我想知道是否有可能写一些等价但只有模板?所以我可以这样写:

b.test<&AA::type>(a);
Run Code Online (Sandbox Code Playgroud)

调用内部测试(a):

std::cout<<"test: "<< (a.*MEMBER) <<std::endl; // MEMBER is given in template
Run Code Online (Sandbox Code Playgroud)

或类似的东西.

c++ templates

4
推荐指数
1
解决办法
1687
查看次数

在编译时重新解释模板类型

我想创建一个类,它基本上包含一个私有属性:

template<typename TA, typename T2, ... Tn> // Use something like <typename... Tn> ?
class A
{
    public:
    A(){};
    ~A(){};

    std::tuple<std::vector<std::reference_wrapper<T1>>, std::vector<std::reference_wrapper<T2>>, ...> t;
};
Run Code Online (Sandbox Code Playgroud)

但我希望能够写出一些简单的东西:

A<int, double, std::string> a;
Run Code Online (Sandbox Code Playgroud)

并自动构建相应的:

std::tuple<std::vector<std::reference_wrapper<int>>, std::vector<std::reference_wrapper<double>>, std::vector<std::reference_wrapper<std::string>>> t;
Run Code Online (Sandbox Code Playgroud)

(对于元组中的任意数量的参数)

所以我只想将任何T转换为std :: reference_wrapper <T>并将其传递给元组.我怎样才能做到这一点 ?谢谢 !

c++ tuples variadic-templates c++14

2
推荐指数
1
解决办法
69
查看次数