Предоставление * неявного * оператора преобразования для специализации шаблона - PullRequest
0 голосов
/ 08 июня 2010

У меня есть шаблонный sparse_vector<T> класс, и я также использую Boost UBLAS. Как бы я предоставил неявные преобразования между sparse_vector<double> и boost::numeric::ublas::compressed_vector<double>?

Я также хотел бы предоставить аналогичные преобразования между std::vector<double> и boost::numeric::ublas::vector<double>.

(я использую gcc 4.4 с включенным C ++ 0x.)

1 Ответ

1 голос
/ 08 июня 2010

Я бы предположил, что для этих типов есть конструктор итератора. Если это предположение верно, то это будет так же просто, как написать что-то вроде этого:


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);

...