С точки зрения академического интереса, предотвращает ли использование шаблонов связывания (особенно в boost :: lambda) встраивание? И если да, то, кроме использования объявленных функторов, существует ли форма boost :: lambda, которая не предотвращает встраивание? (И особенно в последних gcc)
namespace bll = boost::lambda;
class MyItem
{
public:
float attribute() { return 4; }
}
struct AttributeLessConst
{
AttributeLess( float value_a ) : value( value_a ) {}
bool operator()( const MyItem & a )
{
return a.attribute() < value;
};
const float value;
}
std::list<MyItem> myList;
remove_if_seq( myList, AttributeLessConst( 1.5 ) ); // in-linable // yes
remove_if_seq( myList, bll::bind(&MyItem::attribute, *bll::_1) < 1.5 ); // yes?