2011-02-27 82 views
2

每當有人可能使用模板元編程實現目標時應該考慮哪些規則?什麼是好的例如,使用模板元編程比普通舊代碼更有效率,比如boost模板元編程規則

回答

2

我能想到的一個非常有用的規則是儘可能將「編譯錯誤」儘可能接近「真實」問題。通過這種方式,不僅可以推導出問題,而且對於那些使用庫來推斷問題的人也更容易。

這裏是什麼,我的意思是一個人爲的版本:

template<typename Type> struct convert{}; 
template<> struct convert<double>{ static const int value = D_COORD; }; 
template<> struct convert<Degree>{ static const int value = ANGLE_COORD; }; 
template<> struct convert<Radian>{ static const int value = RADIAN_COORD; }; 

,而您會得到編譯器錯誤的不作爲顯着的說明企圖convert<int>時,如果你只是簡單地做了第一個聲明向前聲明,那麼它會立即告訴你,沒有爲「轉換」定義的類型。

就一個很好的例子,恐怕我不得不服從別人。但是,你可能想看看Loki。這不是提升,但它確實很棒。