I'm not sure if this a potential bug/problem or just a benign warning,
but when using the map_values range adaptor with a ptr_map container I
get a warning about returning an address of a local variable. It seems
benign as the expected processing happens, but this type of warning
generally doesn't sound like a good thing.
The following useless code will trigger it.
#include
#include
#include
struct sample
{
int value;
};
typedef boost::ptr_map themap;
int main()
{
themap data;
int key = 5;
data.insert(key, new sample);
boost::for_each(data | boost::adaptors::map_values, [](sample* s)
{
s->value = 10;
});
return 0;
}
I'm using Visual Studio 2017. I also have conformance mode
(/permissive-) turned on for stricter language compliance in case it
makes a difference.
As an aside, I was a little surprised when trying out this little sample
that the inclusion of the above headers is enough to require linking
with the boost regex library. I figure it's probably a reference in the
adaptors somewhere. It's not a big deal. These lib files are normally
available anyway.
--
Bill