我與Visual Studio的開發者預覽播放11多少個參數爲std ::綁定(VC 11只支持4)
其中的不足之處,我偶然發現的是性病::綁定僅支持4個函數參數。
我在C++ 11標準文件中找不到任何關於此的內容。是否定義了最少數量的參數,還是所有實現都依賴於?
我與Visual Studio的開發者預覽播放11多少個參數爲std ::綁定(VC 11只支持4)
其中的不足之處,我偶然發現的是性病::綁定僅支持4個函數參數。
我在C++ 11標準文件中找不到任何關於此的內容。是否定義了最少數量的參數,還是所有實現都依賴於?
這是一些實現相關的值。如果你超過了參數的數量,實現可能會崩潰或者做其他愚蠢的事情。實際的C++ 11實現在這裏使用可變參數模板(VC++還沒有這個功能),所以它們的限制對每個人來說應該足夠了。
這是一種未定義的行爲,超出了實施限制。沒有什麼比你有一個1TB文件試圖進入編譯器並且內存不足。
實際上,這是VC11不支持可變模板的含義。然而,他們可能會比四個更難編碼。 Boost庫一直在使用樣板,最多可以輸入10個參數(例如,在細節目錄中檢查信號2)。四個論點是一個可怕的小數目。
在VC11中,您可以通過設置_VARIADIC_MAX來調整variadiac模板仿真方案所使用的最大參數個數。默認值是5
在這裏看到: http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx
如果你需要更多的參數(例如你有代碼VC9 SP1 或VC10所用6元組編譯),有一個逃生艙口。您可以在項目範圍內定義 _VARIADIC_MAX,範圍介於5和10之間(默認爲5)。增加它會使編譯器消耗更多的內存,並且可能需要您使用/ Zm選項爲PCHes預留更多空間。
'std :: bind'是可變參數,'tr1 :: bind'是實現定義的參數,不是?這個名字看起來不對。 – spraff 2012-02-06 18:45:25
@spraff模板參數的數量和函數參數的數量都受特定實現限制的約束。 – 2012-02-06 22:28:46