当使用BOOST_FOREACH
时,下面的代码安全吗?
BOOST_FOREACH (const std::string& str, getStrings())
{
...
}
...
std::vector<std::string> getStrings()
{
std::vector<std::string> strings;
strings.push_back("Foo");
...
return strings;
}
或者我应该在 调用 BOOST_FOREACH
之前获取容器的拷贝,例如:
const std::vector<std::string> strings = getString();
BOOST_FOREACH (const std::string& str, strings)
{
...
}
在第一个示例中,BOOST_FOREACH
是否有可能最终多次调用 getStrings()
的危险?
最佳答案
And although BOOST_FOREACH is a macro, it is a remarkably well-behaved one. It evaluates its arguments exactly once, leading to no nasty surprises
关于c++ - 正确的 BOOST_FOREACH 用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2271907/