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++ 标准对此确实有话要说。来自 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 正确。
那么,所有语言环境都是如此。
标准 (C++17) 是否强制要求 std::codecvt<char, char, std::mbstate_t>::always_noconv()
returns true
- 对于所有语言环境,或
- 对于实施提供的语言环境,或
- 仅适用于 C 语言环境,或
- 还有别的吗?
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 正确。
那么,所有语言环境都是如此。