Почему я не могу использовать std.algorithm.count с функцией предиката

Следующий код не компилируется:

assert("(((())))()()()()))".count!(c => c.among!('(', ')')) > 0);

С сообщением об ошибке:

"Error: template std.algorithm.searching.count cannot deduce function from argument types !((c) => c.among!('(', ')'))(string), candidates are..."

Но [стандартная библиотека ( http://dlang.org/phobos/std_algorithm_searching.html) ясно показывает, что существует перегрузка count который принимает предикат, считая все элементы R для которого предикат возвращает истину. Так почему компилятор жалуется, когда я пытаюсь использовать count сюда?

1 ответ

Решение

assert("(((())))()()()()))".count!(c => c.among!('(', ')') != 0) > 0);

Проблемы:

  1. Что ваша лямбда возвращается uint вместо bool (проверьте документацию на возвращаемое значение among).
  2. Это ошибка компилятора не помогает.
Другие вопросы по тегам