Visual Studio 2017 使用c++17編譯boost::lexical_cast

工作中發(fā)現,Visual Studio 2017 使用c++17編譯boost::lexical_cast單獨使用是正常的,但如果和boost::property_tree一起使用就會編譯出錯。復原步驟如下:

一、創(chuàng)建文件:

boost_lexical_cast.cpp

#include <boost/lexical_cast.hpp>
#include <string>
#include <iostream>

#include <boost/property_tree/ptree.hpp>

void main(int argc, char** argv){
    std::cout << "boost::lexical_cast<std::string>(123) result is " << boost::lexical_cast<std::string>(123) << std::endl;
}

二、打開VS2017 命令行,執(zhí)行:cl /EHsc /std:c++17 boost_lexical_cast.cpp

報錯如下:

D:\thridparty\boost_1_65_1\stage\boost/numeric/conversion/detail/converter.hpp(453): error C2143: 語法錯誤: 缺少“,”(在“<”的前面)
D:\thridparty\boost_1_65_1\stage\boost/numeric/conversion/detail/converter.hpp(467): note: 參見對正在編譯的 類 模板 實例化 "boost::numeric::convdetail::trivial_converter_impl<Traits>" 的引用
D:\thridparty\boost_1_65_1\stage\boost/numeric/conversion/detail/converter.hpp(453): error C2518: 關鍵字“typename”在基類列表中非法;被忽略
D:\thridparty\boost_1_65_1\stage\boost/numeric/conversion/detail/converter.hpp(454): error C2518: 關鍵字“typename”在基類列表中非法;被忽略
D:\thridparty\boost_1_65_1\stage\boost/numeric/conversion/detail/converter.hpp(474): error C2143: 語法錯誤: 缺少“,”(在“<”的前面)
D:\thridparty\boost_1_65_1\stage\boost/numeric/conversion/detail/converter.hpp(497): note: 參見對正在編譯的 類 模板 實例化 "boost::numeric::convdetail::rounding_converter<Traits,RangeChecker,RawConverter,Float2IntRounder>" 的引用
D:\thridparty\boost_1_65_1\stage\boost/numeric/conversion/detail/converter.hpp(474): error C2518: 關鍵字“typename”在基類列表中非法;被忽略
D:\thridparty\boost_1_65_1\stage\boost/numeric/conversion/detail/converter.hpp(475): error C2518: 關鍵字“typename”在基類列表中非法;被忽略
D:\thridparty\boost_1_65_1\stage\boost/numeric/conversion/detail/converter.hpp(504): error C2143: 語法錯誤: 缺少“,”(在“<”的前面)
D:\thridparty\boost_1_65_1\stage\boost/numeric/conversion/detail/converter.hpp(526): note: 參見對正在編譯的 類 模板 實例化 "boost::numeric::convdetail::non_rounding_converter<Traits,RangeChecker,RawConverter>" 的引用
D:\thridparty\boost_1_65_1\stage\boost/numeric/conversion/detail/converter.hpp(504): error C2518: 關鍵字“typename”在基類列表中非法;被忽略
D:\thridparty\boost_1_65_1\stage\boost/numeric/conversion/detail/converter.hpp(505): error C2518: 關鍵字“typename”在基類列表中非法;被忽略
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容