FESystem (const std::vector<const FiniteElement<dim,spacedim>*> &fes,
const std::vector<unsigned int> &multiplicities);
+#if !defined(__INTEL_COMPILER) || __INTEL_COMPILER >= 1900
/**
* Constructor taking an arbitrary number of parameters of type
* <code>std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>, unsigned int></code>.
* would have expected).
*
* @warning This feature is not available for Intel compilers
- * prior to version 19.0
+ * prior to version 19.0. Defining this
+ * constructor leads to internal compiler errors for Intel compilers prior
+ * to 18.0.
*/
- FESystem (FEPairs &&... fe_pairs);
-# if !defined(__INTEL_COMPILER) || __INTEL_COMPILER >= 1900
template <
class... FEPairs,
typename = typename enable_if_all<
* @endcode
*
* @warning This feature is not available for Intel compilers
- * prior to version 19.0
+ * prior to version 19.0. The constructor is just not selected for overload
+ * resolution.
*/
FESystem(
const std::initializer_list<
std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>, unsigned int>>
&fe_systems);
+#endif
/**
* Copy constructor. This constructor is deleted, i.e., copying
-# if !defined(__INTEL_COMPILER) || __INTEL_COMPILER >= 1900
+#if !defined(__INTEL_COMPILER) || __INTEL_COMPILER >= 1900
// We are just forwarding/delegating to the constructor taking a
// std::initializer_list. If we decide to remove the deprecated constructors, we
// might just use the variadic constructor with a suitable static_assert instead
initialize(fes, multiplicities);
}
-# endif
+#endif
#endif //DOXYGEN