7
可能重複:
Is it possible to write a C++ template to check for a function's existence?C++型性狀檢查類有運營商/成員
是否可以使用升壓型性狀或其他一些機制,以檢查是否有特定的模板參數有一個操作符/函數,例如作爲模板參數的std::vector
有operator[]
,而std::pair
沒有。
可能重複:
Is it possible to write a C++ template to check for a function's existence?C++型性狀檢查類有運營商/成員
是否可以使用升壓型性狀或其他一些機制,以檢查是否有特定的模板參數有一個操作符/函數,例如作爲模板參數的std::vector
有operator[]
,而std::pair
沒有。
你不能通過類型特徵解決這個問題,因爲你必須爲每個可能的名字定義。
Here是列出的常見解決方案,雖然有一個問題:許多STL實現將通用代碼放在基類中,並且此方法不檢查繼承名稱。
如果您還需要檢查遺傳成員,請參閱here。答案提供了一種解決方案,用於檢查相關類是否具有該名稱的成員,還可以檢查常量和參數計數。但是,它會檢查包括參數和返回類型在內的完整簽名,並且會員可見性沒有任何區別。你應該能夠部分地通過使用鏈接的is_call_possible<>
來解決這個問題(還沒有時間看它)。
每當我看到'is_call_possible'線程時,有一點讓我害怕。 – GManNickG 2010-01-23 06:24:21
我的俄羅斯人正在付清,謝謝 – Anycorn 2010-01-23 06:27:14
@GMan:下個月我必須採取內心和攻擊;) – 2010-01-23 06:27:20