istream& Read(istream &is)
{
std::string buf;
while (is >> buf)
{
cout << is.eofbit << " " << is.failbit << " " << is.badbit << endl;
cout << is.rdstate() << endl;
cout << buf << endl;
}
cout << is.eofbit << " " << is.failbit << " " << is.badbit << endl;
cout << is.rdstate() << endl;
is.clear();
cout << is.eofbit << " " << is.failbit << " " << is.badbit << endl;
cout << is.rdstate() << endl;
return is; …Run Code Online (Sandbox Code Playgroud) 在C++ Primer,第五版,§6.5.2中:
甲
constexpr函数被定义像任何其他的功能,但必须满足某些限制:返回类型和每一个参数的类型必须是文字型,和函数体必须只包含一个返回语句(第2.4.4节,第66页.)
但本章的另一句话(第239页):
允许constexpr函数返回不是常量的值
Run Code Online (Sandbox Code Playgroud)// scale(arg) is a constant expression if arg is a constant expression constexpr size_t scale(size_t cnt) { return new_sz() * cnt; }
这是一个矛盾的总结吗?我很困惑.
返回类型scale是文字类型?
更新:文字类型和常量之间有什么区别?