Я использую clang ++ (clang-421.0.60), упакованный с Xcode 4.6, и столкнулся с проблемой с boost :: spirit. Если я компилирую без каких-либо флагов, все компилируется нормально. Если я компилирую с помощью '-std = c ++ 11', я получаю следующую ошибку (при включении «boost / spirit / include / qi.hpp»):
In file included from test_spirit11.cpp:1:
In file included from /usr/local/include/boost/spirit/include/qi.hpp:16:
In file included from /usr/local/include/boost/spirit/home/qi.hpp:14:
In file included from /usr/local/include/boost/spirit/home/qi/action.hpp:14:
In file included from /usr/local/include/boost/spirit/home/qi/action/action.hpp:21:
/usr/local/include/boost/spirit/home/support/action_dispatch.hpp:21:10: fatal error:
'type_traits' file not found
#include <type_traits>
Проблема в том, что используемая по умолчанию библиотека (stdlibc ++) имеет type_traits, определенный как 'tr1 / type_traits', тогда как boost :: spirit ожидает только 'type_traits'. Конечно, я могу решить эту проблему, выполнив:
clang++ -std=c++11 -stdlib=libc++ <...>
Хотя мне бы хотелось использовать libc ++, с практической точки зрения это сложно (многие библиотеки по-прежнему используют stdlibc ++ и зависят от него). Таким образом, я вынужден не использовать libc ++.
Есть ли у кого-нибудь предложения, как с этим бороться? Я действительно хочу, чтобы либо больше разработчиков библиотеки поддерживали libc ++, либо Apple предоставила более новую версию stdlibc ++. Было большим разочарованием иметь доступ к новым функциям C ++ 11, но не иметь возможности использовать их в полной мере из-за отсутствия поддержки библиотеки.
-I/path/to/stdlibc++/includes/tr1
к флагам вашего компилятора. - person n. 1.8e9-where's-my-share m.   schedule 01.01.2013std::tr1
- person Jonathan Wakely   schedule 01.01.2013