fix_up_distorted_child_cells (const typename Triangulation<dim,spacedim>::DistortedCellList &distorted_cells,
Triangulation<dim,spacedim> &triangulation);
+#ifdef _MSC_VER
+ // Microsoft's VC++ has a bug where it doesn't want to recognize that
+ // an implementation (definition) of the extract_boundary_mesh function
+ // matches a declaration. This can apparently only be avoided by
+ // doing some contortion with the return type using the following
+ // intermediate type. This is only used when using MS VC++ and uses
+ // the direct way of doing it otherwise
+ template <template <int,int> class Container, int dim, int spacedim>
+ struct ExtractBoundaryMesh
+ {
+ typedef
+ std::map<typename Container<dim-1,spacedim>::cell_iterator,
+ typename Container<dim,spacedim>::face_iterator>
+ return_type;
+ };
+#endif
+
/**
* This function implements a boundary
* subgrid extraction. Given a
* curved boundaries.
*/
template <template <int,int> class Container, int dim, int spacedim>
+#ifndef _MSC_VER
std::map<typename Container<dim-1,spacedim>::cell_iterator,
typename Container<dim,spacedim>::face_iterator>
+#else
+ typename ExtractBoundaryMesh<Container,dim,spacedim>::return_type
+#endif
extract_boundary_mesh (const Container<dim,spacedim> &volume_mesh,
Container<dim-1,spacedim> &surface_mesh,
const std::set<types::boundary_id> &boundary_ids
template <template <int,int> class Container, int dim, int spacedim>
+#ifndef _MSC_VER
std::map<typename Container<dim-1,spacedim>::cell_iterator,
typename Container<dim,spacedim>::face_iterator>
+#else
+ typename ExtractBoundaryMesh<Container,dim,spacedim>::return_type
+#endif
extract_boundary_mesh (const Container<dim,spacedim> &volume_mesh,
Container<dim-1,spacedim> &surface_mesh,
const std::set<types::boundary_id> &boundary_ids)
namespace GridTools \{
template
+#ifndef _MSC_VER
std::map< Container<deal_II_dimension-1,deal_II_space_dimension>::cell_iterator,
Container<deal_II_dimension,deal_II_space_dimension>::face_iterator>
+#else
+ typename ExtractBoundaryMesh<Container,deal_II_dimension,deal_II_space_dimension>::return_type
+#endif
extract_boundary_mesh (const Container<deal_II_dimension, deal_II_space_dimension> &mesh,
Container<deal_II_dimension-1,deal_II_space_dimension> &boundary_mesh,
const std::set<types::boundary_id> &boundary_ids);