gpt4 book ai didi

c++ - 在函数调用中定义一个匿名结构

转载 作者:行者123 更新时间:2023-11-27 23:42:18 34 4
gpt4 key购买 nike

我已经可以做到了:

struct {
uint64 _i;
bool operator()(uint64 elem)
{
const uint64 i = _i++; return elem & i; // Just an example
}
} filter;

// Templated function
Array<uint64> clone = Containers::filter(array, filter);

我想知道是否可以在函数调用中移动结构定义,这样我就可以定义一个像这样的宏:

Array<uint64> clone = Containers::filter(array, ENUMERATE(i, elem, elem & i)); // Same as above

当我尝试这个时,我得到了 expected primary-expression before 'struct':

Array<uint64> clone = Containers::filter(array, struct {
uint64 _i;
bool operator()(uint64 elem)
{
const uint64 i = _i++; return elem & i;
}
});

最佳答案

有状态的、可变的 lambda 可以满足您的要求:

Array<uint64> clone = Containers::filter(
array,
[_i = uint64{0}](uint64 elem) mutable -> bool {
const uint64 i = _i++;
return elem & i;
}
);

关于c++ - 在函数调用中定义一个匿名结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53554465/

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