gpt4 book ai didi

c++ - std::function 和 std::variant 相互引用

转载 作者:行者123 更新时间:2023-12-02 16:14:28 25 4
gpt4 key购买 nike

我想创建以下类型

using Function = std::function<Variant(int)>;
using Variant = std::variant<int, bool, Function>;

在 Variant 中我也需要有 Function,但是 Function 应该返回一个 Variant(按值)。但是我找不到正确的语法。我试图转发声明功能,但我不确定如何执行此操作。

据我所知,我应该能够写出这样的东西,因为关于函数的返回类型,前向声明通常就足够了。

最佳答案

当然,您可以搭建它。你不能让两个标识符都是别名。不能向前声明别名。

像这样:

struct Variant;
using Function = std::function<Variant(int)>;
struct Variant : std::variant<int, bool, Function> {
using variant::variant;
};

应该主要按预期工作。返回类型最初是不完整的(只要没有执行要求它完整的操作就应该没问题)。然后通过使用 Function 的别名完成它。

需要注意的是 Variant 现在是它自己的独立类型。所以模板参数推导的某些方面可能会有所不同。但我怀疑它可能会上升并打扰您。

如果需要,您还可以选择调换角色。请注意,标准库可能未指定为从其组件继承的类型可靠地运行。因此,可能需要对基类引用进行一些转换。以最适合您的方式进行布局。

关于c++ - std::function 和 std::variant 相互引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67179205/

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