它看起來像使用特徵類型與STL容器非常混亂,需要特別注意對齊問題。我的問題是,我打算創建複雜的類層次結構,其中可能包含一個或多個Eigen類型作爲成員變量的幾十個類。從文檔看來,只要在成員變量中包含Eigen類型,您的類就會受到與「特徵」類型相同的問題「感染」。這意味着我必須格外小心使用STL容器,不僅適用於Eigen類型,而且適用於我所有的幾十個類。使用特徵類型與STL容器和std :: vector
更讓我擔心的是,任何在我們的代碼中使用我的類的實例的人都會遇到同樣的問題,並且需要成爲這個主題的專家 - 即使我的類沒有公開任何特徵類型他們的公共接口!
這很令人沮喪。我有問題,
- 我的理解上面是否正確(我只需要支持C++ 11和現代編譯器)?
- 是否有任何模式的人使用,所以他們不必污染他們的代碼與特殊的Eigen處理各地?
- 我在想全局禁用整個矢量化。這是否會以犧牲性能爲代價來解決上述問題?只有特定的代碼纔可以選擇啓用它嗎?
- 如果我忘記在代碼的某個地方照顧對齊問題,我是否總是遇到編譯時錯誤,或者問題可能會保持隱藏狀態,並且在運行時可能會崩潰?
快速提問:如果我忘記在代碼的某處處理對齊問題,我是否總是遇到編譯時錯誤,或者問題可能會保持隱藏狀態,並且在運行時可能會崩潰? – ShitalShah
順便說一句,我已經編輯了我的答案來解決你的最後一個問題。 – ggael