* all components are copied from V
*/
Vector (const Vector<Number>& V);
+
+
+// note: I disabled this function for the time being, since egcs1.1.2
+// does not respect the "explicit" keyword for template constructors.
+// this leads to unwanted conversions and in some places to automatically
+// generated temporaries, where this is not a good idea
+// /**
+// * Copy constructor taking a vector of
+// * another data type. This will fail if
+// * there is no conversion path from
+// * #OtherNumber# to #Number#. Note that
+// * you may lose accuracy when copying
+// * to a vector with data elements with
+// * less accuracy.
+// */
+// template <typename OtherNumber>
+// explicit
+// Vector (const Vector<OtherNumber> &v);
/**
* Constructor. Set dimension to #n# and
+// see the .h file for why this function was disabled
+//
+// template <typename Number>
+// template <typename OtherNumber>
+// Vector<Number>::Vector (const Vector<OtherNumber>& v) :
+// dim(v.size()),
+// maxdim(v.size()),
+// val(0)
+// {
+// if (dim)
+// {
+// val = new Number[maxdim];
+// Assert (val != 0, ExcOutOfMemory());
+// copy (v.begin(), v.end(), begin());
+// }
+// }
+
+
+
template <typename Number>
void Vector<Number>::reinit (const unsigned int n, const bool fast) {
if (n==0)
// explicit instantiations
template class Vector<double>;
template class Vector<float>;
+
+// see the .h file for why these functions are disabled.
+// template Vector<float>::Vector (const Vector<double>& v);
+// template Vector<double>::Vector (const Vector<float>& v);