LINUX.ORG.RU

boost::bind и boost::to_lower_copy


0

0

Что-то под конец рабочего дня голова перегрелась
class channel{
std::string name()const;
...
}
std::vector<channel*> channels;
std::string foo="bla_bla";
std::remove_if(channels.begin(),channels.end(),
boost::bind(std::equal_to<std::string>(),
boost::bind(&channel::name,_1),
boost::to_lower_copy(foo)
)
);

Сравниваться должны в нижнем регистре .
Как завернуть boost::bind(&channel::name,_1) в to_lower_copy ?
Bind ругается ...

★★★

>Сравниваться должны в нижнем регистре.

Напиши в анонимном namespace предикат-наследника std::unary_function<>. Или у тебя полный Александреску Головного Мозга?

Absurd ★★★
()

У меня получилось так:

std::remove_if(channels.begin(), channels.end(),
  bind(                             
    static_cast<std::string (*)(const std::string&, const std::locale&)>(
     to_lower_copy
    ),
    protect(bind(&channel::name, _1))(_1),
    std::locale()
  ) == to_lower_copy(foo)
);

Jini ★★
()
Ответ на: комментарий от Jini

ужоснах ;-)
Я создал бинарныи функтор , который сравнивает 2 строки в нижнем регистре , так читабельнее .

kitov ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.