DEAL_II_NAMESPACE_OPEN
-// explicit instantiations for real data types
-template class BlockVector<double>;
-template class BlockVector<float>;
+#include "block_vector.inst"
+// these functions can't be generated by the preprocessor since
+// the template arguments need to be different
#ifndef DEAL_II_EXPLICIT_CONSTRUCTOR_BUG
template BlockVector<double>::BlockVector (const BlockVector<float> &);
template BlockVector<float>::BlockVector (const BlockVector<double> &);
-#endif
-
-template void BlockVector<double>::reinit<double>(const BlockVector<double>&,
- const bool);
-template void BlockVector<double>::reinit<float>(const BlockVector<float>&,
- const bool);
-
-template void BlockVector<float>::reinit<double>(const BlockVector<double>&,
- const bool);
-template void BlockVector<float>::reinit<float>(const BlockVector<float>&,
- const bool);
-
-// explicit instantiations for complex data types
-template class BlockVector<std::complex<double> >;
-template class BlockVector<std::complex<float> >;
-#ifndef DEAL_II_EXPLICIT_CONSTRUCTOR_BUG
template BlockVector<std::complex<double> >::BlockVector (const BlockVector<std::complex<float> > &);
template BlockVector<std::complex<float> >::BlockVector (const BlockVector<std::complex<double> > &);
#endif
-template void BlockVector<std::complex<double> >::reinit<std::complex<double> >(const BlockVector<std::complex<double> >&,
- const bool);
-template void BlockVector<std::complex<double> >::reinit<std::complex<float> >(const BlockVector<std::complex<float> >&,
- const bool);
-
-template void BlockVector<std::complex<float> >::reinit<std::complex<double> >(const BlockVector<std::complex<double> >&,
- const bool);
-template void BlockVector<std::complex<float> >::reinit<std::complex<float> >(const BlockVector<std::complex<float> >&,
- const bool);
-
-
DEAL_II_NAMESPACE_CLOSE
--- /dev/null
+//---------------------------------------------------------------------------
+// $Id: block_vector.cc 15454 2007-11-06 21:20:29Z bangerth $
+// Version: $Name$
+//
+// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 by the deal.II authors
+//
+// This file is subject to QPL and may not be distributed
+// without copyright and license information. Please refer
+// to the file deal.II/doc/license.html for the text and
+// further information on this license.
+//
+//---------------------------------------------------------------------------
+
+
+for (S : REAL_SCALAR)
+ {
+ template class BlockVector<S>;
+ }
+
+for (S1, S2 : REAL_SCALAR)
+ {
+ template void BlockVector<S1>::reinit<S2>(const BlockVector<S2>&,
+ const bool);
+ }
+
+
+for (S : COMPLEX_SCALAR)
+ {
+ template class BlockVector<S>;
+ }
+
+for (S1, S2 : COMPLEX_SCALAR)
+ {
+ template void BlockVector<S1>::reinit<S2>(const BlockVector<S2>&,
+ const bool);
+ }