在浏览一些c++11概念时,我遇到了术语narrow contract和wide contract。
但是我没有找到为这些合同编写的简单函数示例。
我可以看到一个简单的函数示例来区分这两个合同吗?
根据文档, std::string_view 有一个带有 aconst char *和 a的构造函数std::size_t,但未声明noexcept:
constexpr basic_string_view(const CharT* s, size_type count);
Run Code Online (Sandbox Code Playgroud)
另一方面,文档还声明了用户定义的文字operator""sv,在我见过的所有实现中都是该构造函数的简单包装器,已声明noexcept:
constexpr std::string_view operator "" sv(const char* str, std::size_t len) noexcept;
Run Code Online (Sandbox Code Playgroud)
你知道这种差异的原因吗?构造函数什么时候可以抛出?