typedef DummyBarrier Barrier;
#endif
-
+
+
+ /**
+ * Given a class, argument type,
+ * and the return type, generate a
+ * local typedef denoting a pointer
+ * to such a member function.
+ */
+ template <class Class, class RetType>
+ struct MemFunPtr0
+ {
+ typedef RetType (Class::*type) ();
+ };
+
+#ifdef DEAL_II_CONST_MEM_FUN_PTR_BUG
+ /**
+ * Same as above, but for the case
+ * of a member function marked
+ * @p{const}. This should not
+ * really be necessary, but Intel's
+ * compiler has a bug here so we
+ * have to work around.
+ */
+ template <class Class, class RetType>
+ struct MemFunPtr0<const Class, RetType>
+ {
+ typedef RetType (Class::*type) () const;
+ };
+#endif
+ /**
+ * Given a class, argument types,
+ * and the return type, generate a
+ * local typedef denoting a pointer
+ * to such a member function.
+ */
+ template <class Class, class Arg1, class RetType>
+ struct MemFunPtr1
+ {
+ typedef RetType (Class::*type) (Arg1);
+ };
+
+#ifdef DEAL_II_CONST_MEM_FUN_PTR_BUG
+ /**
+ * Same as above, but for the case
+ * of a member function marked
+ * @p{const}. This should not
+ * really be necessary, but Intel's
+ * compiler has a bug here so we
+ * have to work around.
+ */
+ template <class Class, class Arg1, class RetType>
+ struct MemFunPtr1<const Class, Arg1, RetType>
+ {
+ typedef RetType (Class::*type) (Arg1) const;
+ };
+#endif
+ /**
+ * Given a class, argument types,
+ * and the return type, generate a
+ * local typedef denoting a pointer
+ * to such a member function.
+ */
+ template <class Class, class Arg1, class Arg2, class RetType>
+ struct MemFunPtr2
+ {
+ typedef RetType (Class::*type) (Arg1, Arg2);
+ };
+
+#ifdef DEAL_II_CONST_MEM_FUN_PTR_BUG
+ /**
+ * Same as above, but for the case
+ * of a member function marked
+ * @p{const}. This should not
+ * really be necessary, but Intel's
+ * compiler has a bug here so we
+ * have to work around.
+ */
+ template <class Class, class Arg1, class Arg2, class RetType>
+ struct MemFunPtr2<const Class, Arg1, Arg2, RetType>
+ {
+ typedef RetType (Class::*type) (Arg1, Arg2) const;
+ };
+#endif
+
+ /**
+ * Given a class, argument types,
+ * and the return type, generate a
+ * local typedef denoting a pointer
+ * to such a member function.
+ */
+ template <class Class, class Arg1, class Arg2, class Arg3, class RetType>
+ struct MemFunPtr3
+ {
+ typedef RetType (Class::*type) (Arg1, Arg2, Arg3);
+ };
+
+#ifdef DEAL_II_CONST_MEM_FUN_PTR_BUG
+ /**
+ * Same as above, but for the case
+ * of a member function marked
+ * @p{const}. This should not
+ * really be necessary, but Intel's
+ * compiler has a bug here so we
+ * have to work around.
+ */
+ template <class Class, class Arg1, class Arg2, class Arg3, class RetType>
+ struct MemFunPtr3<const Class, Arg1, Arg2, Arg3, RetType>
+ {
+ typedef RetType (Class::*type) (Arg1, Arg2, Arg3) const;
+ };
+#endif
+
+ /**
+ * Given a class, argument types,
+ * and the return type, generate a
+ * local typedef denoting a pointer
+ * to such a member function.
+ */
+ template <class Class, class Arg1, class Arg2, class Arg3, class Arg4, class RetType>
+ struct MemFunPtr4
+ {
+ typedef RetType (Class::*type) (Arg1, Arg2, Arg3, Arg4);
+ };
+
+#ifdef DEAL_II_CONST_MEM_FUN_PTR_BUG
+ /**
+ * Same as above, but for the case
+ * of a member function marked
+ * @p{const}. This should not
+ * really be necessary, but Intel's
+ * compiler has a bug here so we
+ * have to work around.
+ */
+ template <class Class, class Arg1, class Arg2, class Arg3, class Arg4, class RetType>
+ struct MemFunPtr4<const Class, Arg1, Arg2, Arg3, Arg4, RetType>
+ {
+ typedef RetType (Class::*type) (Arg1, Arg2, Arg3, Arg4) const;
+ };
+#endif
+
+ /**
+ * Given a class, argument types,
+ * and the return type, generate a
+ * local typedef denoting a pointer
+ * to such a member function.
+ */
+ template <class Class, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class RetType>
+ struct MemFunPtr5
+ {
+ typedef RetType (Class::*type) (Arg1, Arg2, Arg3, Arg4, Arg5);
+ };
+
+#ifdef DEAL_II_CONST_MEM_FUN_PTR_BUG
+ /**
+ * Same as above, but for the case
+ * of a member function marked
+ * @p{const}. This should not
+ * really be necessary, but Intel's
+ * compiler has a bug here so we
+ * have to work around.
+ */
+ template <class Class, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class RetType>
+ struct MemFunPtr5<const Class, Arg1, Arg2, Arg3, Arg4, Arg5, RetType>
+ {
+ typedef RetType (Class::*type) (Arg1, Arg2, Arg3, Arg4, Arg5) const;
+ };
+#endif
+
+ /**
+ * Given a class, argument types,
+ * and the return type, generate a
+ * local typedef denoting a pointer
+ * to such a member function.
+ */
+ template <class Class, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class RetType>
+ struct MemFunPtr6
+ {
+ typedef RetType (Class::*type) (Arg1, Arg2, Arg3, Arg4, Arg5, Arg6);
+ };
+
+#ifdef DEAL_II_CONST_MEM_FUN_PTR_BUG
+ /**
+ * Same as above, but for the case
+ * of a member function marked
+ * @p{const}. This should not
+ * really be necessary, but Intel's
+ * compiler has a bug here so we
+ * have to work around.
+ */
+ template <class Class, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class RetType>
+ struct MemFunPtr6<const Class, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, RetType>
+ {
+ typedef RetType (Class::*type) (Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) const;
+ };
+#endif
+
+ /**
+ * Given a class, argument types,
+ * and the return type, generate a
+ * local typedef denoting a pointer
+ * to such a member function.
+ */
+ template <class Class, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7, class RetType>
+ struct MemFunPtr7
+ {
+ typedef RetType (Class::*type) (Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7);
+ };
+
+#ifdef DEAL_II_CONST_MEM_FUN_PTR_BUG
+ /**
+ * Same as above, but for the case
+ * of a member function marked
+ * @p{const}. This should not
+ * really be necessary, but Intel's
+ * compiler has a bug here so we
+ * have to work around.
+ */
+ template <class Class, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7, class RetType>
+ struct MemFunPtr7<const Class, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, RetType>
+ {
+ typedef RetType (Class::*type) (Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7) const;
+ };
+#endif
/**
* Class used to store a pointer temporarily and delete the object
{
public:
/**
- * Typedef a pointer to a global
+ * Typedef a pointer to a member
* function which we will call
* from this class.
*/
- typedef RetType (Class::*FunPtr) ();
+ typedef typename MemFunPtr0<Class,RetType>::type FunPtr;
/**
* Constructor. Store pointer to
friend
typename MemFunData0<Class_,void>::ArgCollector
encapsulate (void (Class_::*fun_ptr)());
+
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ template <class Class_>
+ friend
+ typename MemFunData0<const Class_,void>::ArgCollector
+ encapsulate (void (Class_::*fun_ptr)() const);
+#endif
};
{
public:
/**
- * Typedef a pointer to a global
+ * Typedef a pointer to a member
* function which we will call
* from this class.
*/
- typedef RetType (Class::*FunPtr) (Arg1);
+ typedef typename MemFunPtr1<Class,Arg1,RetType>::type FunPtr;
/**
* Constructor. Store pointer to
friend
typename MemFunData1<Class_,Arg1_,void>::ArgCollector
encapsulate (void (Class_::*fun_ptr)(Arg1_));
+
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ template <class Class_, typename Arg1_>
+ friend
+ typename MemFunData1<const Class_,Arg1_,void>::ArgCollector
+ encapsulate (void (Class_::*fun_ptr)(Arg1_) const);
+#endif
};
{
public:
/**
- * Typedef a pointer to a global
+ * Typedef a pointer to a member
* function which we will call
* from this class.
*/
- typedef RetType (Class::*FunPtr) (Arg1, Arg2);
+ typedef typename MemFunPtr2<Class,Arg1,Arg2,RetType>::type FunPtr;
/**
* Constructor. Store pointer to
friend
typename MemFunData2<Class_,Arg1_,Arg2_,void>::ArgCollector
encapsulate (void (Class_::*fun_ptr)(Arg1_, Arg2_));
+
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ template <class Class_, typename Arg1_, typename Arg2_>
+ friend
+ typename MemFunData2<const Class_,Arg1_,Arg2_,void>::ArgCollector
+ encapsulate (void (Class_::*fun_ptr)(Arg1_, Arg2_) const);
+#endif
};
{
public:
/**
- * Typedef a pointer to a global
+ * Typedef a pointer to a member
* function which we will call
* from this class.
*/
- typedef RetType (Class::*FunPtr) (Arg1, Arg2, Arg3);
+ typedef typename MemFunPtr3<Class,Arg1,Arg2,Arg3,RetType>::type FunPtr;
/**
* Constructor. Store pointer to
friend
typename MemFunData3<Class_,Arg1_,Arg2_,Arg3_,void>::ArgCollector
encapsulate (void (Class_::*fun_ptr)(Arg1_,Arg2_,Arg3_));
+
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ template <class Class_, typename Arg1_, typename Arg2_, typename Arg3_>
+ friend
+ typename MemFunData3<const Class_,Arg1_,Arg2_,Arg3_,void>::ArgCollector
+ encapsulate (void (Class_::*fun_ptr)(Arg1_,Arg2_,Arg3_) const);
+#endif
};
{
public:
/**
- * Typedef a pointer to a global
+ * Typedef a pointer to a member
* function which we will call
* from this class.
*/
- typedef RetType (Class::*FunPtr) (Arg1, Arg2, Arg3, Arg4);
+ typedef typename MemFunPtr4<Class,Arg1,Arg2,Arg3,Arg4,RetType>::type FunPtr;
/**
* Constructor. Store pointer to
friend
typename MemFunData4<Class_,Arg1_,Arg2_,Arg3_,Arg4_,void>::ArgCollector
encapsulate (void (Class_::*fun_ptr)(Arg1_, Arg2_, Arg3_, Arg4_));
- };
+
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ template <class Class_, typename Arg1_, typename Arg2_, typename Arg3_, typename Arg4_>
+ friend
+ typename MemFunData4<const Class_,Arg1_,Arg2_,Arg3_,Arg4_,void>::ArgCollector
+ encapsulate (void (Class_::*fun_ptr)(Arg1_, Arg2_, Arg3_, Arg4_) const);
+#endif
+};
{
public:
/**
- * Typedef a pointer to a global
+ * Typedef a pointer to a member
* function which we will call
* from this class.
*/
- typedef RetType (Class::*FunPtr) (Arg1, Arg2, Arg3, Arg4, Arg5);
+ typedef typename MemFunPtr5<Class,Arg1,Arg2,Arg3,Arg4,Arg5,RetType>::type FunPtr;
/**
* Constructor. Store pointer to
typename MemFunData5<Class_,Arg1_,Arg2_,Arg3_,Arg4_,Arg5_,void>::ArgCollector
encapsulate (void (Class_::*fun_ptr)(Arg1_, Arg2_, Arg3_,
Arg4_, Arg5_));
+
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ template <class Class_, typename Arg1_, typename Arg2_, typename Arg3_, typename Arg4_, typename Arg5_>
+ friend
+ typename MemFunData5<const Class_,Arg1_,Arg2_,Arg3_,Arg4_,Arg5_,void>::ArgCollector
+ encapsulate (void (Class_::*fun_ptr)(Arg1_, Arg2_, Arg3_,
+ Arg4_, Arg5_) const);
+#endif
};
{
public:
/**
- * Typedef a pointer to a global
+ * Typedef a pointer to a member
* function which we will call
* from this class.
*/
- typedef RetType (Class::*FunPtr) (Arg1, Arg2, Arg3, Arg4, Arg5, Arg6);
+ typedef typename MemFunPtr6<Class,Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,RetType>::type FunPtr;
/**
* Constructor. Store pointer to
typename MemFunData6<Class_,Arg1_,Arg2_,Arg3_,Arg4_,Arg5_,Arg6_,void>::ArgCollector
encapsulate (void (Class_::*fun_ptr)(Arg1_, Arg2_, Arg3_,
Arg4_, Arg5_, Arg6_));
+
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ template <class Class_, typename Arg1_, typename Arg2_, typename Arg3_, typename Arg4_, typename Arg5_, typename Arg6_>
+ friend
+ typename MemFunData6<const Class_,Arg1_,Arg2_,Arg3_,Arg4_,Arg5_,Arg6_,void>::ArgCollector
+ encapsulate (void (Class_::*fun_ptr)(Arg1_, Arg2_, Arg3_,
+ Arg4_, Arg5_, Arg6_) const);
+#endif
};
{
public:
/**
- * Typedef a pointer to a global
+ * Typedef a pointer to a member
* function which we will call
* from this class.
*/
- typedef RetType (Class::*FunPtr) (Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7);
+ typedef typename MemFunPtr7<Class,Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,RetType>::type FunPtr;
/**
* Constructor. Store pointer to
typename MemFunData7<Class_,Arg1_,Arg2_,Arg3_,Arg4_,Arg5_,Arg6_,Arg7_,void>::ArgCollector
encapsulate (void (Class_::*fun_ptr)(Arg1_, Arg2_, Arg3_,
Arg4_, Arg5_, Arg6_, Arg7_));
+
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ template <class Class_, typename Arg1_, typename Arg2_, typename Arg3_, typename Arg4_, typename Arg5_, typename Arg6_, typename Arg7_>
+ friend
+ typename MemFunData7<const Class_,Arg1_,Arg2_,Arg3_,Arg4_,Arg5_,Arg6_,Arg7_,void>::ArgCollector
+ encapsulate (void (Class_::*fun_ptr)(Arg1_, Arg2_, Arg3_,
+ Arg4_, Arg5_, Arg6_, Arg7_) const);
+#endif
};
typename MemFunData0<Class,void>::ArgCollector
encapsulate (void (Class::*fun_ptr)());
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ /**
+ * Same as the previous function,
+ * but for member functions marked
+ * @p{const}. This function should
+ * not be necessary, since the
+ * compiler should deduce a
+ * constant class as template
+ * argument, but we have to work
+ * around a bug in Intel's icc
+ * compiler with this.
+ */
+ template <class Class>
+ inline
+ typename MemFunData0<const Class,void>::ArgCollector
+ encapsulate (void (Class::*fun_ptr)() const);
+#endif
+
/**
* Encapsulate a member function
* pointer into an object with
typename MemFunData1<Class,Arg1,void>::ArgCollector
encapsulate (void (Class::*fun_ptr)(Arg1));
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ /**
+ * Same as the previous function,
+ * but for member functions marked
+ * @p{const}. This function should
+ * not be necessary, since the
+ * compiler should deduce a
+ * constant class as template
+ * argument, but we have to work
+ * around a bug in Intel's icc
+ * compiler with this.
+ */
+ template <class Class, typename Arg1>
+ inline
+ typename MemFunData1<const Class,Arg1,void>::ArgCollector
+ encapsulate (void (Class::*fun_ptr)(Arg1) const);
+#endif
+
/**
* Encapsulate a member function
inline
typename MemFunData2<Class,Arg1,Arg2,void>::ArgCollector
encapsulate (void (Class::*fun_ptr)(Arg1, Arg2));
-
+
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ /**
+ * Same as the previous function,
+ * but for member functions marked
+ * @p{const}. This function should
+ * not be necessary, since the
+ * compiler should deduce a
+ * constant class as template
+ * argument, but we have to work
+ * around a bug in Intel's icc
+ * compiler with this.
+ */
+ template <class Class, typename Arg1, typename Arg2>
+ inline
+ typename MemFunData2<const Class,Arg1,Arg2,void>::ArgCollector
+ encapsulate (void (Class::*fun_ptr)(Arg1, Arg2) const);
+#endif
+
/**
* Encapsulate a member function
inline
typename MemFunData3<Class,Arg1,Arg2,Arg3,void>::ArgCollector
encapsulate (void (Class::*fun_ptr)(Arg1, Arg2, Arg3));
-
+
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ /**
+ * Same as the previous function,
+ * but for member functions marked
+ * @p{const}. This function should
+ * not be necessary, since the
+ * compiler should deduce a
+ * constant class as template
+ * argument, but we have to work
+ * around a bug in Intel's icc
+ * compiler with this.
+ */
+ template <class Class, typename Arg1, typename Arg2, typename Arg3>
+ inline
+ typename MemFunData3<const Class,Arg1,Arg2,Arg3,void>::ArgCollector
+ encapsulate (void (Class::*fun_ptr)(Arg1, Arg2, Arg3) const);
+#endif
+
/**
* Encapsulate a member function
inline
typename MemFunData4<Class,Arg1,Arg2,Arg3,Arg4,void>::ArgCollector
encapsulate (void (Class::*fun_ptr)(Arg1, Arg2, Arg3, Arg4));
-
+
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ /**
+ * Same as the previous function,
+ * but for member functions marked
+ * @p{const}. This function should
+ * not be necessary, since the
+ * compiler should deduce a
+ * constant class as template
+ * argument, but we have to work
+ * around a bug in Intel's icc
+ * compiler with this.
+ */
+ template <class Class, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
+ inline
+ typename MemFunData4<const Class,Arg1,Arg2,Arg3,Arg4,void>::ArgCollector
+ encapsulate (void (Class::*fun_ptr)(Arg1, Arg2, Arg3, Arg4) const);
+#endif
+
/**
* Encapsulate a member function
typename MemFunData5<Class,Arg1,Arg2,Arg3,Arg4,Arg5,void>::ArgCollector
encapsulate (void (Class::*fun_ptr)(Arg1, Arg2, Arg3, Arg4, Arg5));
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ /**
+ * Same as the previous function,
+ * but for member functions marked
+ * @p{const}. This function should
+ * not be necessary, since the
+ * compiler should deduce a
+ * constant class as template
+ * argument, but we have to work
+ * around a bug in Intel's icc
+ * compiler with this.
+ */
+ template <class Class, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
+ inline
+ typename MemFunData5<const Class,Arg1,Arg2,Arg3,Arg4,Arg5,void>::ArgCollector
+ encapsulate (void (Class::*fun_ptr)(Arg1, Arg2, Arg3, Arg4, Arg5) const);
+#endif
+
/**
* Encapsulate a member function
typename MemFunData6<Class,Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,void>::ArgCollector
encapsulate (void (Class::*fun_ptr)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6));
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ /**
+ * Same as the previous function,
+ * but for member functions marked
+ * @p{const}. This function should
+ * not be necessary, since the
+ * compiler should deduce a
+ * constant class as template
+ * argument, but we have to work
+ * around a bug in Intel's icc
+ * compiler with this.
+ */
+ template <class Class, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5, typename Arg6>
+ inline
+ typename MemFunData6<const Class,Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,void>::ArgCollector
+ encapsulate (void (Class::*fun_ptr)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) const);
+#endif
+
/**
* Encapsulate a member function
* pointer into an object with
typename MemFunData7<Class,Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,void>::ArgCollector
encapsulate (void (Class::*fun_ptr)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7));
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ /**
+ * Same as the previous function,
+ * but for member functions marked
+ * @p{const}. This function should
+ * not be necessary, since the
+ * compiler should deduce a
+ * constant class as template
+ * argument, but we have to work
+ * around a bug in Intel's icc
+ * compiler with this.
+ */
+ template <class Class, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5, typename Arg6, typename Arg7>
+ inline
+ typename MemFunData7<const Class,Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,void>::ArgCollector
+ encapsulate (void (Class::*fun_ptr)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7) const);
+#endif
+
/**
* Spawn a new thread using the
return fun_ptr;
}
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ template <class Class>
+ typename MemFunData0<const Class,void>::ArgCollector
+ encapsulate (void (Class::*fun_ptr)() const)
+ {
+ return fun_ptr;
+ }
+#endif
+
template <class Class, typename Arg1>
{
return fun_ptr;
}
+
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ template <class Class, typename Arg1>
+ typename MemFunData1<const Class,Arg1,void>::ArgCollector
+ encapsulate (void (Class::*fun_ptr)(Arg1) const)
+ {
+ return fun_ptr;
+ }
+#endif
{
return fun_ptr;
}
+
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ template <class Class, typename Arg1, typename Arg2>
+ typename MemFunData2<const Class,Arg1,Arg2,void>::ArgCollector
+ encapsulate (void (Class::*fun_ptr)(Arg1, Arg2) const)
+ {
+ return fun_ptr;
+ }
+#endif
{
return fun_ptr;
}
+
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ template <class Class, typename Arg1, typename Arg2, typename Arg3>
+ typename MemFunData3<const Class,Arg1,Arg2,Arg3,void>::ArgCollector
+ encapsulate (void (Class::*fun_ptr)(Arg1, Arg2, Arg3) const)
+ {
+ return fun_ptr;
+ }
+#endif
return fun_ptr;
}
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ template <class Class, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
+ typename MemFunData4<const Class,Arg1,Arg2,Arg3,Arg4,void>::ArgCollector
+ encapsulate (void (Class::*fun_ptr)(Arg1, Arg2, Arg3, Arg4) const)
+ {
+ return fun_ptr;
+ }
+#endif
+
template <class Class, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
return fun_ptr;
}
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ template <class Class, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
+ typename MemFunData5<const Class,Arg1,Arg2,Arg3,Arg4,Arg5,void>::ArgCollector
+ encapsulate (void (Class::*fun_ptr)(Arg1, Arg2, Arg3, Arg4, Arg5) const)
+ {
+ return fun_ptr;
+ }
+#endif
+
template <class Class, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5, typename Arg6>
return fun_ptr;
}
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ template <class Class, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5, typename Arg6>
+ typename MemFunData6<const Class,Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,void>::ArgCollector
+ encapsulate (void (Class::*fun_ptr)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) const)
+ {
+ return fun_ptr;
+ }
+#endif
+
template <class Class, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5, typename Arg6, typename Arg7>
return fun_ptr;
}
+#ifdef DEAL_II_TEMPL_CONST_MEM_PTR_BUG
+ template <class Class, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5, typename Arg6, typename Arg7>
+ typename MemFunData7<const Class,Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,void>::ArgCollector
+ encapsulate (void (Class::*fun_ptr)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7) const)
+ {
+ return fun_ptr;
+ }
+#endif
+
template <typename ForwardIterator>