gpt4 book ai didi

c++ - 安全地重新定义 BOOST_FOREACH 宏

转载 作者:太空狗 更新时间:2023-10-29 23:25:46 26 4
gpt4 key购买 nike

我有以下宏:

#define FOREACH(decl, c) BOOST_FOREACH(decl, std::make_pair((c).begin(), (c).end()))

(我正在使用这个宏,因为我的容器没有实现可变迭代 API。)

它的问题是 c 被计算了两次。

我的问题是这个宏是否可以修复以便:

  1. c 最多计算一次
  2. 为满足第一个条件而创建的任何局部变量仅存在于相应的 foreach 范围内。

最佳答案

您可以使用内联辅助函数。

#define FOREACH(decl, c) BOOST_FOREACH(decl, pair_helper(c))

template <typename T>
inline std::pair<typename T::iterator, typename T::iterator> pair_helper (T c) {
return std::make_pair(c.begin(), c.end());
}

关于c++ - 安全地重新定义 BOOST_FOREACH 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8858750/

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