2

标准 (C++17) 是否要求std::codecvt<char, char, std::mbstate_t>::always_noconv()返回 true

  • 对于所有语言环境,或
  • 对于实现提供的语言环境,或
  • 仅适用于 C 语言环境,或
  • 别的东西?

C++ 标准确实有话要说。来自 C++17 的第 25.4.1.4 节:

codecvt<char, char, mbstate_t>实现退化转换;它根本不转换。

断章取义,这强烈表明它适用于所有语言环境。尽管如此,我还是很高兴听到任何可以证实这一点的人的意见,或者有理由说明为什么不应该这样。

4

1 回答 1

0

好的,正如 cpplearner 所指出的,标准(C++17)do_always_noconv()在第 25.4.1.4.2 节的要求中也有以下文本:

codecvt<char,char, mbstate_t>返回真。

如果文本改为:

专业化codecvt<char,char, mbstate_t>返回 true。

我将不再有任何疑问。

然而,由于这确实是第 25.4.1.4.2 节中其他函数下类似语句的措辞方式,我认为其意图是要求在codecvt<char,char, mbstate_t>专业化中always_noconv()返回 true。

因此,所有语言环境都是如此。

于 2021-02-09T04:20:50.950 回答