2017-05-26 26 views
0

我嘗試執行Project-OSRM的examle.cpp文件。我做了以下步驟:從源命名空間'std'中的'underlying_type_t'錯誤未在項目-OSRM中的example.cpp中命名模板類型

  • 構建OSRM如上所述here
  • 在新終端:CD OSRM-後端/例如,在終端
  • :cmake的..在終端
  • :cmake的 - 建立。
  • 在終端中:sudo cmake --build。 --target安裝
  • 移動地圖承包商引擎提取分區存儲UTIL在/ usr /本地/包括/ OSRM在/ usr /本地/包括(否則錯誤映射不是在/ usr /本地/包括)在終端
  • :克++ -std = C++ 11 example.cpp -o例如

但我得到的錯誤

‘underlying_type_t’ in namespace ‘std’ does not name a template type 
    static_cast<std::underlying_type_t<RouteParameters::AnnotationsType>> 

有沒有人有一個想法是什麼,我做錯了或什麼錯誤,以及如何解決這個問題?

錯誤消息

In file included from /usr/local/include/engine/api/match_parameters.hpp:31:0, 
       from /usr/local/include/osrm/match_parameters.hpp:31, 
       from example.cpp:1: 
/usr/local/include/engine/api/route_parameters.hpp: In function ‘bool osrm::engine::api::operator&(osrm::engine::api::RouteParameters::AnnotationsType, osrm::engine::api::RouteParameters::AnnotationsType)’: 
/usr/local/include/engine/api/route_parameters.hpp:144:26: error: ‘underlying_type_t’ in namespace ‘std’ does not name a template type 
     static_cast<std::underlying_type_t<RouteParameters::AnnotationsType>>(l 
         ^
/usr/local/include/engine/api/route_parameters.hpp:144:43: error: expected ‘>’ before ‘<’ token 
     static_cast<std::underlying_type_t<RouteParameters::AnnotationsType>>(l 
             ^
/usr/local/include/engine/api/route_parameters.hpp:144:43: error: expected ‘(’ before ‘<’ token 
/usr/local/include/engine/api/route_parameters.hpp:144:43: error: expected primary-expression before ‘<’ token 
/usr/local/include/engine/api/route_parameters.hpp:144:76: error: expected primary-expression before ‘>>’ token 
    static_cast<std::underlying_type_t<RouteParameters::AnnotationsType>>(lhs) & 
                    ^
/usr/local/include/engine/api/route_parameters.hpp:145:26: error: ‘underlying_type_t’ in namespace ‘std’ does not name a template type 
     static_cast<std::underlying_type_t<RouteParameters::AnnotationsType>>(r 
         ^
/usr/local/include/engine/api/route_parameters.hpp:145:43: error: expected ‘>’ before ‘<’ token 
     static_cast<std::underlying_type_t<RouteParameters::AnnotationsType>>(r 
             ^
/usr/local/include/engine/api/route_parameters.hpp:145:43: error: expected ‘(’ before ‘<’ token 
/usr/local/include/engine/api/route_parameters.hpp:145:43: error: expected primary-expression before ‘<’ token 
/usr/local/include/engine/api/route_parameters.hpp:145:76: error: expected primary-expression before ‘>>’ token 
    static_cast<std::underlying_type_t<RouteParameters::AnnotationsType>>(rhs)); 
                    ^
/usr/local/include/engine/api/route_parameters.hpp:145:84: error: expected ‘)’ before ‘;’ token 
    static_cast<std::underlying_type_t<RouteParameters::AnnotationsType>>(rhs)); 
                      ^
/usr/local/include/engine/api/route_parameters.hpp:145:84: error: expected ‘)’ before ‘;’ token 
/usr/local/include/engine/api/route_parameters.hpp: In function ‘osrm::engine::api::RouteParameters::AnnotationsType osrm::engine::api::operator|(osrm::engine::api::RouteParameters::AnnotationsType, osrm::engine::api::RouteParameters::AnnotationsType)’: 
/usr/local/include/engine/api/route_parameters.hpp:152:26: error: ‘underlying_type_t’ in namespace ‘std’ does not name a template type 
     static_cast<std::underlying_type_t<RouteParameters::AnnotationsType>>(l 
         ^
/usr/local/include/engine/api/route_parameters.hpp:152:43: error: expected ‘>’ before ‘<’ token 
     static_cast<std::underlying_type_t<RouteParameters::AnnotationsType>>(l 
             ^
/usr/local/include/engine/api/route_parameters.hpp:152:43: error: expected ‘(’ before ‘<’ token 
/usr/local/include/engine/api/route_parameters.hpp:152:43: error: expected primary-expression before ‘<’ token 
/usr/local/include/engine/api/route_parameters.hpp:152:76: error: expected primary-expression before ‘>>’ token 
    static_cast<std::underlying_type_t<RouteParameters::AnnotationsType>>(lhs) | 
                    ^
/usr/local/include/engine/api/route_parameters.hpp:153:26: error: ‘underlying_type_t’ in namespace ‘std’ does not name a template type 
     static_cast<std::underlying_type_t<RouteParameters::AnnotationsType>>(r 
         ^
/usr/local/include/engine/api/route_parameters.hpp:153:43: error: expected ‘>’ before ‘<’ token 
     static_cast<std::underlying_type_t<RouteParameters::AnnotationsType>>(r 
             ^
/usr/local/include/engine/api/route_parameters.hpp:153:43: error: expected ‘(’ before ‘<’ token 
/usr/local/include/engine/api/route_parameters.hpp:153:43: error: expected primary-expression before ‘<’ token 
/usr/local/include/engine/api/route_parameters.hpp:153:76: error: expected primary-expression before ‘>>’ token 
    static_cast<std::underlying_type_t<RouteParameters::AnnotationsType>>(rhs)); 
                    ^
/usr/local/include/engine/api/route_parameters.hpp:153:84: error: expected ‘)’ before ‘;’ token 
    static_cast<std::underlying_type_t<RouteParameters::AnnotationsType>>(rhs)); 
                      ^
/usr/local/include/engine/api/route_parameters.hpp:153:84: error: expected ‘)’ before ‘;’ token 
+1

'underlying_type_t'需要像大多數'* _t'別名一樣的C++ 14。 –

回答

0

underlying_type_t需要C++ 14。爲了能夠使用它,將-std=c++14傳遞給您的編譯器。

相關問題