2012-03-11 16 views
1

嚴格要求我看到一個公共std::istream_iterator::_M_equal成員函數在我的C++實現(這是由其他標準的全球職能istream的迭代器相比)。該標準不要求該用戶可以使用該成員功能。更多的公衆成員函數比那些由C++標準

我想知道,如果實現提供比標準所要求的其他更多的公共成員函數仍然被認爲是「標準」。只有

回答

3

是的,這是由標準允許的。

所需的接口由標準文獻中描述,但一般不準確的方式來實現它。以下劃線+大寫字母開頭的名稱(如_M_equal)專門用於實施。

2

由C++標準規定的API /功能應由符合標準的實現支持的標準,實現可隨意添加自己的擴展,但他們是因爲其他的實現並不需要支持那些非標準和不便於攜帶。

2

是的,這是允許的。由於您不允許在std命名空間中定義任何自己的名稱,並且由於此外還保留了具有下劃線 - 大寫的名稱,所以良好格式的C++程序不可能遇到與這些實現細節發生名稱衝突的情況。

顯然沒有便攜式程序必須使用這些額外的公共功能,雖然沒有什麼阻止您在您的特定平臺上使用它們。