gpt4 book ai didi

c++ - 优化掉未使用的参数化字段

转载 作者:行者123 更新时间:2023-11-28 06:06:30 26 4
gpt4 key购买 nike

我正在尝试为在内存“membuf”上运行的“编解码器”层次结构定义一个父类 - 其中一些编解码器是纯功能性的,但有些需要(非-local) 副作用,比如在某个字节中设置一个位(下面的“flags”)。所以,我想要 2 个父类,本质上,一个有成员 flag_type*,一个没有,我想保存 的 8 个字节>flag_type* - 我试图定义第二个基类,没有模板参数也没有成员 flag_type* 但这没有用。有什么想法吗?

template <typename flag_type =void>
class Codec
{
public:
Codec(flag_type* flags =nullptr)
: _mem(graph.mem()), _flags(flags)
{}

protected:
membuf& _mem;
flag_type* _flags;
};

最佳答案

你必须做特化,比如:

struct no_tag{}; // Used to specify no flag type

template <typename flag_type =void>
class Codec
{
public:
Codec(flag_type* flags =nullptr)
: _mem(graph.mem()), _flags(flags)
{}

protected:
membuf& _mem;
flag_type* _flags;
};


template <>
class Codec<no_tag>
{
public:
Codec() : _mem(graph.mem()) {}

protected:
membuf& _mem;
};

关于c++ - 优化掉未使用的参数化字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32280187/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com