如果尝试将负数分配给未签名的容器,是否存在导致编译错误的方法?

Sam*_*mer 5 c++ compiler-errors g++

有没有办法防止这个问题中的代码产生二进制文件?理想情况下,在编译时通过错误.问题的示例代码:

unsigned int nVal = 0;
nVal = -5;  // no error!
Run Code Online (Sandbox Code Playgroud)

thi*_*ton 10

如果您使用的是g ++,交换机-Wsign-conversion会发出有关转换的警告,并-Werror会发出错误警告.