gpt4 book ai didi

c++ - 我可以让 lambda 推断出变体返回类型吗?

转载 作者:行者123 更新时间:2023-12-03 10:04:34 25 4
gpt4 key购买 nike

这主要是理论上的,因为我总是可以拼出返回类型,但我想知道是否有办法告诉 lambda 返回类型应该是 lambda 主体中所有返回的 union(std::variant) 。

#include <iostream>
#include <variant>

struct A{
int val = 47;
};

struct B {
float val = 4.7;
};

int main()
{
for (int i=0;i<8;++i){
// can this be something like -> auto_variant (auto_variant is some library type)
auto var = []()->std::variant<A, B> {
if (rand()%2 ){
return A{};
} else {
return B{};
}
}();
std::visit ([](const auto& val) {std::cout<< val.val << std::endl;}, var);
}
}
注意:我强烈的感觉是答案是否定的,这是不可能的,但我很好奇是否有人知道一些技巧。
注意2:使用 std::any 不符合我的要求,因为我希望在编译时而不是在运行时知道 lambda 的返回类型(使用 any_cast )。

最佳答案

你会发现我在作弊,但也许

using A_or_B = std::variant<A, B>;
然后
[]() {
if (rand()%2) {
return A_or_B{A{}};
} else {
return A_or_B{B{}};
}
}
有诀窍吗?

关于c++ - 我可以让 lambda 推断出变体返回类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66120016/

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