std::codecvt<char, char, std::mbstate_t>::always_noconv() 何时需要 return 为真?

When is std::codecvt<char, char, std::mbstate_t>::always_noconv() required to return true?

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

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

codecvt<char, char, mbstate_t> implements a degenerate conversion; it does not convert at all.

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

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

codecvt<char,char, mbstate_t> returns true.

如果文本改为:

The specialization codecvt<char,char, mbstate_t> returns true.

我不会再怀疑了。

但是,由于这确实是第 25.4.1.4.2 节中其他功能下类似语句的措辞方式,我认为其意图是要求 codecvt<char,char, mbstate_t> 专业化,always_noconv() returns 正确。

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