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