Во-первых, V->info.name
плохо сформирован, внутри или снаружи лямбды.
Объект функции, отправляемый алгоритму std::find_if
, должен быть унарной функцией. Он должен взять текущий элемент для проверки в качестве параметра.
auto found = std::find_if(
V.begin(), V.end(),
[&Name](koalaGraph::PVertex const& item_to_check) {
return Name == item_to_check->info.name;
}
);
Тип found
является итератором найденного элемента. Если ничего не найдено, возвращается V.end()
. Если вы используете C ++ 14 или лучше, вы можете даже использовать общие лямбды:
auto found = std::find_if(
V.begin(), V.end(),
[&Name](auto const& item_to_check) {
return Name == item_to_check->info.name;
}
);
Я хочу позволить любые допустимые символы UTF-8 в именах пользователей и паролях.
Откажитесь от всей надежды. Стандартная аутентификация и Unicode не смешиваются.
Нет никакого стандарта (*) для того, как закодировать символы неASCII в Стандартную аутентификацию username:password маркер прежде base64ing это. Следовательно, каждый браузер делает что-то другое:
*: некоторые люди интерпретируют стандарт, чтобы сказать что также:
Но ни одно из этих предложений не находится по теме для включения в base64-закодированный подлинный маркер, и ссылка RFC2047 в спецификации HTTP действительно не работает вообще, так как все места, это могло бы потенциально использоваться, явно запрещены ‘правилами’ контекста атома самого RFC2047, даже если HTTP-заголовки соблюдали правила и расширения семейства RFC822, которое они не делают.
Таким образом: тьфу. Существует little-no надежда на это когда-либо зафиксированное в стандарте или в браузерах кроме Opera. Это - просто еще один фактор, отгоняющий людей от Базовой аутентификации HTTP в пользу нестандартного и менее - доступные основанные на cookie схемы аутентификации. Позор действительно.
Это - известный недостаток, что Стандартная аутентификация не оказывает поддержку для non-ISO-8859-1 символов.
Некоторый UAS, как известно, использует UTF-8 вместо этого (Opera приходит на ум), но нет никакой совместимости для этого также.
Насколько я могу сказать, нет никакого способа зафиксировать это, кроме путем определения новой схемы аутентификации, которая обрабатывает весь Unicode. И получение его развернулось.
Вы протестировали использование чего-то как curl
для проверки это не проблема Firefox? Автор HTTP RFC тих на ASCII по сравнению с неASCII, но он действительно говорит, что значение передало в заголовке, является именем пользователя и паролем, разделенным двоеточием, и я не могу найти двоеточие в строке, что Firefox сообщает об отправке.
Дайджест-аутентификация HTTP тоже не решает эту проблему. Он страдает той же проблемой, что клиент не может сообщить серверу, какой набор символов он использует, и сервер не может правильно предположить, что использовал клиент.