Ошибка KEIL: нет экземпляра перегруженной функции & quot; std :: transform & quot; соответствует списку аргументов

У меня есть проблема, которая не отображается (даже нет предупреждений) в XCode, но позволяет компилировать в Keil MDK.

void grammar::parse(std::string &_expr) {
std::transform(_expr.begin(), _expr.end(), _expr.begin(), std::tolower);
_expr.erase(std::remove_if(_expr.begin(), _expr.end(), std::isspace), _expr.end());
}

Вот что я получаю

ошибка: # 304: ни один экземпляр перегруженной функции «std :: transform» не соответствует списку аргументов
ошибка: # 304: ни один экземпляр шаблона функции «std :: remove_if» не соответствует списку аргументов

Заголовок включен:

#include <iostream>
#include <sstream>
#include <iomanip>
#include <cmath>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <stdio.h>
#include <algorithm>

Не могли бы вы посоветовать мне, где искать? Я удивлен, что версия XCode работает как положено …

0

Решение

Вы включаете ctype.hэтот заголовок объявляет функцию tolower в глобальном пространстве имен (это часть библиотеки C, поэтому там нет других пространств имен). Может быть, вы хотели включить cctype, Для данного заголовка стандартной библиотеки C X.hесть версия c ++ cX который обеспечивает некоторые из тех же функций внутри ::std Пространство имен.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]