假設我有以下Matrix模板類,並且需要將矢量表示爲1 x RowSize或ColSize x 1矩陣(以便我可以重複使用與矢量兼容的許多矩陣運算符:乘以2基質,通過一個標量等)乘以矩陣:部分專業化和SFINAE
template <class T, size_t ColumnSize, size_t RowSize>
struct Matrix {
T [ColumnSize][RowSize];
}
我有兩個問題:
1)如果我沒有錯的我可以通過偏特或矩陣的方法,使用SFINAE(例如實現這一當ColSize或RowSize爲1時啓用'length'方法)。提及的選項有哪些優缺點?
2)如果我選擇去與局部特殊化,有沒有辦法來定義行和列向量一個專業化,而不是這樣的:
template <class T, size_t ColumnSize>
struct Matrix<T, ColumnSize, 1> {
T length() const;
T [ColumnSize][RowSize];
}
template <class T, size_t RowSize>
struct Matrix<T, 1, RowSize> {
T length() const;
T [ColumnSize][RowSize];
}
你應該給更多的上下文,否則你的問題是「基於意見」。 –
如果你問及兩者的缺點和優點,我認爲這樣會更好,因爲這樣更容易客觀回答。 –
建議:您可以使用'enum class VectorOrientation {ColumnVector,RowVector};'將參數定義爲'template class Matrix'。那麼我認爲不會有歧義。 –