æè¿ç¨boost::mathåºï¼åç°ä¼åæ以åçç¨åºå²çªãæ¯å¦æçç¨åºå¦æç¨å°
#include<tr1/unordered_map> ççstd::tr1åååä¸çä¸è¥¿ããã
googleäºä¸ï¼åå æ¯boost::tr1设计åè¡·æ¯ä¸ºäºå¨ä½ çç³»ç»æ²¡æstd::tr1æ ååºå®ç°çæ
åµä¸è®©ä½ ä»ç¶å¯ä»¥å¨ç¨åºä¸ä½¿ç¨std::tr1::unordered_map, std::tr1::tupleçä¸ä¸ï¼å½ç¶äºè¿æ¯ä¸ä¸ªwork around,ä¹å°±æ¯ä½ å
¶å®è¿æ¯ç¨çboost::tupleçç
åªæ¯ä½ ç代ç åçæ¶åå¯ä»¥åstd::tr1::tupleã
æ¯å¦boostçmathåºçä¸ä¸ªåå¸å½æ°çå®ç°
/usr/include/boost/math/special_functions/detail/igamma_inverse.hpp
å¨è¯¥æ件第13è¡
#include <boost/tr1/tuple.hpp>
ç¶åä¸é¢å®å°±ç¨å°äºtuple使ç¨å¦ä¸
std::tr1::tuple<T, T, T> operator() (const T& x) const //å
¶å®å¢è¿æ¯ç¨çboost::ä¸é¢çtupleçä¸/usr/include/boost/tr1/tuple.hpp
namespace std{ namespace tr1{
using ::boost::fusion::tuple;
// [6.1.3.2] Tuple creation functions
using ::boost::fusion::ignore;
using ::boost::fusion::make_tuple;
using ::boost::fusion::tie;
using ::boost::fusion::get;
// [6.1.3.3] Tuple helper classes
using ::boost::fusion::tuple_size;
using ::boost::fusion::tuple_element;
}}
è¿å°±æ¯work aroundçæ¹æ³ã
ç°å¨é®é¢æ¥äºï¼æçGCCå·²ç»æstd::tr1çå®ç°äºï¼æ¯å¦<tr1/unordered_map> ,é£ä¹çå°±ä¼å¸¦æ¥å½åå²çªäºï¼æ¯å¦åæ¶å两个tupleå®ä¹äºããããboost::fusion::tupleååççstd::tr1::tupleã
è§boost::tr1çææ¡£
å®ç°
å¦æ Boost.TR1 被é
ç½® 为使ç¨ä½ çæ ååºä¸çåç TR1 å®ç°ï¼åå®ä¸éè¦åå¤å°äºæ
ï¼å®åªæ¯å
å«éå½ç头æ件就è¡äºã
å¦æ Boost.TR1 使ç¨äºæ个ç»ä»¶ç Boost å®ç°ï¼åå®éè¦å
å«éå½ç Boost 头æ件并使ç¨å£°æå°æéçåå导å
¥å° namespace std::tr1 ä¸ã注æï¼åªæä½ä¸ºæ åé¨åç声æä¼è¢«å¯¼å
¥ï¼æ¬å®ç°ææéå¸¸ä¸¥æ ¼å°æ²¡æå°ææ Boost-ç¹æçæ©å±å¼å
¥å° namespace std::tr1ï¼è¿æ¯ä¸ºäºè½å¤æè·ç¨æ·ä»£ç ä¸çä»»ä½å¯ç§»æ¤æ§é误ãå¦æä½ ççéè¦ä½¿ç¨ Boost-ç¹æçæ©å±ï¼åä½ åºå½ç´æ¥å
å« Boost 头æ件ï¼åæ¹ç¨ namespace boost:: ä¸ç声æã注æï¼æ¬å®ç°çé£æ ¼å¹¶ä¸æ¯å®å
¨ç¬¦åæ åçï¼å®ä¸è½å°ç¨æ·èªå®ä¹ç TR1 ç»ä»¶ç模æ¿ç¹åå¢å å° namespace std::tr1 ä¸ãè¿æä¸å°ä¸¤ä¸ª Boost åºå°æªå®å
¨ç¬¦åæ åï¼ä»»ä½ä¸æ åä¸ç¬¦çå°æ¹é½å·²å¨ "TR1 çåç±»"ä¸è ä¸è¯´æãä¸è¿å¹¸å¥½ï¼è¿äºä¸ç¬¦åæ åçè¡ä¸ºå¨å®é
ä¸æå°ä¼ç¨å°ã
å¦æä½ ä½¿ç¨æ åç头æ件å
å«(å¨ boost/tr1/tr1 ä¸)ï¼åè¿äºå¤´æ件åææ¶å¯è½ä¸ç°æçæ ååºå¤´æ件å²çª(ä¾å¦ shared_ptr å·²å¢å å°ç°æçæ ååºå¤´æ件 <memory> ä¸èä¸æ¯å®èªå·±ç头æ件)ãè¿äºå¤´æ件å¯ä»¥ç¨ä»¥ä¸ä¸¤ç§æ¹æ³ä¹ä¸å转å°ç°æçæ ååºå¤´æ件ï¼å¯¹äº gccï¼ä½¿ç¨ #include_next, è对äºå
¶å®ç¼è¯å¨å使ç¨å®BOOST_TR1_STD_HEADER(header) (å¨ boost/tr1/detail/config.hpp ä¸å®ä¹)ï¼å®å°æ©å±ä¸º #include <../include/header>. 对äºå¤§å¤æ°ç¼è¯å¨ï¼è¿æ ·å°±å¯ä»¥ç´æ¥ä½¿ç¨ï¼ä½æ¯è¿æå³çè¿äºå¤´æ件ä¸è½è¢«æ¾å¨å为"include"ä¸å·²å¨ä½ çç¼è¯å¨æ索路å¾ä¸çç®å½ä¸ã
æä¹è§£å³å²çªé®é¢å¢ï¼è¿æ¯æ²¡æå®å
¨å¼æç½ï¼ä¸è¿è§£å³åæ³è¿æ¯googleå°äºãã OK 解å³äºå°±å¥½ãã 以åå说ã
æç说æç
§boost/tr1/tuple.hpp ä¸æåç
#ifdef BOOST_HAS_TR1_TUPLE
# ifdef BOOST_HAS_INCLUDE_NEXT
# include_next BOOST_TR1_HEADER(tuple)
# else
# include <boost/tr1/detail/config_all.hpp>
# include BOOST_TR1_STD_HEADER(BOOST_TR1_PATH(tuple))
# endif æåºè¯¥å ä¸ä¸ª #define BOOST_HAS_tR1_TUPLE å°±è½è§£å³é®é¢ å 为 BOOST_TR1_HEADER(tuple) ä¼è¢«è½¬æ¢ä¸º #include <tr1/tuple> ä½æ¯å®éªä¸æåãããã usr/include/boost/tr1/tuple.hpp:13:43: error: no include path in which to search for tr1/tuple //WHY ç¥é为ä»ä¹ç帮å¿åè¯æä¸ï¼è°¢è°¢~ //估计å¯è½æ¯incude_nextçåå ï¼ æ²¡å¤ªä»ç»çinclude_nextä½ç¨TODO æågoogleå°ç解å³æ¹æ¡æ¯#define BOOST_HAS_TR1_TUPLE 1
#include <boost/tr1/detail/config.hpp>
#undef BOOST_HAS_INCLUDE_NEXT //ä¼¼ä¹æ¯éè¦å±è½æ incude_next
温馨提示:答案为网友推荐,仅供参考