根据文档, std::string_view 有一个构造函数,它采用 aconst char *
和 a std::size_t
,但未声明noexcept
:
constexpr basic_string_view(const CharT* s, size_type count);
另一方面,文档还声明了用户定义的 literal operator""sv
,在我见过的所有实现中,它都是该构造函数的简单包装器,被声明为noexcept
:
constexpr std::string_view operator "" sv(const char* str, std::size_t len) noexcept;
你知道这种差异的原因吗?构造函数什么时候可以抛出?