Если вы уже используете C ++ 11, почему бы не использовать лямбду?
int main (int argc, const char* argv[])
{
blah a = { 1 };
auto are_same = [=](blah const& b) -> bool {
return a.member == b.member;
};
std::vector<blah> blahs = { {0}, {1}, {2} };
return static_cast<int>(std::any_of(blahs.begin(), blahs.end(), are_same));
}
Если вы не можете использовать лямбда-выражения, вы можете использовать bind для создания функции:
using namespace std::placeholders;
auto are_same = std::bind(
std::equal_to<int>(),
std::bind(&blah::member, _1),
std::bind(&blah::member, a)
);