Please consider this non-compiling code:
#include <boost/range/adaptors.hpp>
class Stuff {
public:
bool var;
};
class Manager {
/// Get everything
std::vector<Stuff*>
get_all_stuff() const
{
return list_of_stuff;
}
/// Get a vector of only those that whose "var" matches the "tf" argument.
std::vector<Stuff*>
get_some_stuff(const bool tf) const
{
return (get_all_stuff() |
boost::adaptors::filtered(
[](Stuff const& s) { return (s.var == tf); }
)
);
}
private:
std::vector<Stuff*> list_of_stuff;
};
Compilation dies with this error:
ex.cc: In lambda function:
ex.cc:21:46: error: ‘tf’ is not captured
[](Stuff const& s) { return (s.var == tf); }
^
1.) How do I bring that function argument into my lambda?
2.) Is this a dangerous approach?
- I'm NOT worried about the lifetime of the vector returned by "get_all_stuff()".
- I AM worried about the lifetime of the vector returned by "get_some_stuff()".
Aucun commentaire:
Enregistrer un commentaire