2010-06-07 90 views
0

我有一個模板sparse_vector<T>類,我也使用Boost UBLAS。我如何提供隱含轉換sparse_vector<double>boost::numeric::ublas::compressed_vector<double>爲模板專門化提供* implicit *轉換運算符

我還想提供std::vector<double>boost::numeric::ublas::vector<double>之間的類似轉換。

(我用GCC 4.4的C++ 0x啓用。)

回答

1

我認爲有這些類型的迭代器的構造函數。如果這個假設是正確的話會因爲寫的東西,像這樣簡單:


template < typename OutputVector, typename InputVector > 
OutputVector vector_cast(InputVector const& input) 
{ 
    return OutputVector(input.begin(), input.end()); 
} 

使用像:compressed_vector<double> vect = vector_cast<compressed_vector<double> >(my_sparse_vector);

+0

感謝您抽出寶貴時間來回答。我實際上是問是否可以寫一個隱式轉換,以便我可以在需要boost :: ... :: vector的上下文中使用std :: vector <...>。 (我已經編輯了這個問題,使其更清晰。) – 2010-06-07 20:55:51

+1

這是不能做到的。你可以覆蓋每個這樣的函數,然後用上面顯式的「投射」來調用原始的,但是這與你在不實際改變所討論的對象的情況下一樣接近。 – 2010-06-07 21:05:46

+0

謝謝。我只是想確保這是不可能的。 – 2010-06-07 21:19:42