今天要做一些流输出,并且需要强制格式化字段。回顾大多数操纵器是持久性的,我决定向恶作剧投保:
auto oldp = std::cout.precision(); // Cache this to be able to undo a set
std::out << "threshold"
<< std::setprecision(2) << m_threshold // set
<< std::setprecision(oldp) << std::endl; // restore
然后我的linter在“恢复”行上发出有关隐式整数向下转换的警告。
稍微四处摸索并确定'nuf',std::setprecision
会占用int
,而std::ios_base::precision
会返回streamsize
(这是系统中的long
我的面前)。
因此,皮特犬正在提出有效的申诉(而且很容易就可以解决),但是为什么存在这种情况?