我在C ++实现中看到了一个公共std::istream_iterator::_M_equal
成员函数(它用于比较其他标准全局函数的istream迭代器)。该标准不要求成员函数可供用户使用。
我想知道提供除标准要求之外的更多公共成员函数的实现是否仍然可以被视为“标准”。
答案 0 :(得分:3)
是的,标准允许这样做。
标准文档描述了所需的接口,但通常不是实现它的确切方法。以下划线+大写字母开头的名称(如_M_equal
)专门保留给实现。
答案 1 :(得分:2)
只有标准符合实现是标准的,才能支持C ++标准规定的那些api /特性,实现可以自由添加自己的扩展,但它们是非标准的,不可移植的,因为其他实现不需要支持这些。 / p>
答案 2 :(得分:2)
是的,这是允许的。由于您不允许在std
命名空间内定义任何您自己的名称,并且由于保留了具有下划线资本的名称,因此格式良好的C ++程序不会遇到名称冲突。那些实施细节。
显然,没有任何便携式程序必须使用这些额外的公共功能,但没有什么能阻止您在 特定平台上使用它们。