在我的项目工程代码内#include <boost/asio.hpp>后导致了编译报错:
./include/boost/asio/detail/consuming_buffers.hpp: In member function 'boost::asio::detail::consuming_buffers<Buffer, Buffers, Buffer_Iterator>::prepared_buffers_type boost::asio::detail::consuming_buffers<Buffer, Buffers, Buffer_Iterator>::prepare(std::size_t)':
./include/boost/asio/detail/consuming_buffers.hpp:105:65: error: '.' cannot appear in a constant-expression
./include/boost/asio/detail/consuming_buffers.hpp:105:50: error: parse error in template argument list
这里应该是没问题的,这可是boost库源码,百度百科查看C++运算符优先级后,觉得这里也是没问题的。
痛哭很久,意外地修改后,解决了该编译报错。修改方法:使用圆括号括起来。
怎么会需要使用圆括号来括一下啊,理论上完全没必要啊!
难道我的编译器对于C++标准的运算符优先级有鬼? 我当前使用的是基于mips的一个g++的交叉编译器,公司里还没有人用过这个,我对这个编译器心里也没底。
来尝试一下,专门做个小实验:
实测,小实验编译没问题,这说明我当前的mips编译器对于C++标准运算符优先级的完全遵守的啊。
算了,不深究了, 遇到奇怪问题,先行在此,做个简要笔记吧。
.