При использовании 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()
несколько раз?