3
對於Visual C++ 2003到2013年編譯時存在此錯誤。它在針對g ++ 4.9.2編譯時不存在。這個函數爲什麼會進入範圍?
#include <ios>
int main() {
left(*(new std::string));
return 0;
}
問題是它會報告一些關於參數的錯誤。我期望的結果是它會說「標識符未找到」,因爲std :: left()應該超出範圍!複製內聯函數的
實施例:
STD_BEGIN
inline std::ios_base& __CLRCALL_OR_CDECL left2(std::ios_base& _Iosbase) {
_Iosbase.setf(std::ios_base::left, std::ios_base::adjustfield);
return (_Iosbase);
}
_STD_END
我檢查IOS,發現它是一個內聯函數。我將它複製出來,使用相同的宏將其粘貼到std名稱空間中,併爲其指定一個新名稱。但是新功能超出了範圍?
那麼爲什麼std :: left()和std :: right()在這裏的範圍?
這只是一個例子。 – Zhro 2015-04-06 10:55:19