我假设 BOOST_STRONG_TYPEDEF 定义的类型上的 numeric_limits::max() 会给出与基础类型相同的结果。但是下面的程序表明情况并非如此(用g++或clang++用boost 1.65编译):
#include <boost/serialization/strong_typedef.hpp>
#include <limits>
#include <iostream>
BOOST_STRONG_TYPEDEF(uint64_t, s);
int main(int , char **)
{
std::cerr << std::numeric_limits<uint64_t>::max() << std::endl
<< std::numeric_limits<s>::max() << std::endl;
return 0;
}
结果:
$ clang++ test.cpp
$ ./a.out
18446744073709551615
0
这是预期的结果吗?