Я использовал компилятор LLVM GCC 4.2, но по какой-то причине я хочу использовать компилятор Apple LLVM. Я использую несколько буст-библиотек, статически связанных.
Моя часть кода здесь:
#include <boost/program_options/detail/config_file.hpp>
std::set<std::string> options;
std::map<std::string, std::string> parameters;
options.insert("*");
for (config_file_iterator i(config, options), e ; i != e; ++i)
parameters[i->string_key] = i->value[0];
Когда я изменил компилятор в Xcode 4.5.1 на Apple LLVM 4.1, он выдает мне эту ошибку:
В файле, включенном из A.cpp: 16: boost_1_46_1 / boost / program_options / detail / config_file.hpp: 163: 17: ошибка: вызов функции to_internal, которая не видна в шаблоне определение не найдено путем аргумент-зависимого поиска s = to_internal (in); ^ A.cpp: 82: 39: примечание: в реализации функции-члена 'Повышение :: program_options :: детали :: basic_config_file_iterator :: GetLine' просили здесь for (config_file_iterator i (config, options), e; i! = e; ++ i) ^ boost_1_46_1 / boost / program_options / detail / convert.hpp: 70: 48: примечание: to_internal должен быть объявлен до вызова сайта или в пространстве имен '__gnu_cxx'
BOOST_PROGRAM_OPTIONS_DECL std :: string to_internal (const std :: string);
Кто-нибудь знает, каково решение?
Пожалуйста, найдите в верхней части detail/config_file.hpp
, следующая строка:
#include <boost/program_options/detail/convert.hpp>
И удалить #if
а также #endif
вокруг этой линии. После этого все должно быть хорошо. Исправление уже включено в текущие версии.
Других решений пока нет …