)
-#
-# Some versions of gcc get this example wrong:
-#
-# struct X
-# {
-# template <typename T> void operator << (T);
-# };
-# int main()
-# {
-# X x;
-# x.operator << <double> (1);
-# }
-#
-# They want to see a "template" for disambiguation in
-# x.template operator << <double> (1);
-# which shouldn't be necessary since the left hand side of the
-# dot operator is not template dependent. Surprisingly, this is
-# only the case for operators, not if operator<< were a regular
-# function. Annoyingly, other compilers barf on seeing the
-# disambiguating "template" keyword.
-#
-# - Wolfgang Bangerth, Matthias Maier, rewritten 2012
-#
-CHECK_CXX_COMPILER_BUG(
- "
- struct X
- {
- template <typename T> void operator << (T) {}
- };
- int main()
- {
- X x;
- x.operator << <double> (1);
- return 0;
- }
- "
- DEAL_II_TEMPL_OP_DISAMBIGUATION_BUG
- )
-
-
#
# Some older versions of gcc compile this, despite the 'explicit'
# keyword:
-#
-# Check if the declared prototype of abort() has a throw()
-# specification. We overload abort() in our testsuite, so have
-# to make sure that we match the exception specification
-# correctly.
-#
-# (Yes. It is not a bug. But the logic is the same.)
-#
-# - Matthias Maier, rewritten 2012
-#
-CHECK_CXX_COMPILER_BUG(
- "
- #include <cstdlib>
- extern \"C\" void abort () { for(;;) ; }
- int main(){ return 0; }
- "
- DEAL_II_ABORT_NOTHROW_EXCEPTION)
-
-
#
# Gcc and some other compilers have __PRETTY_FUNCTION__, showing
# an unmangled version of the function we are presently in,
*/
#cmakedefine DEAL_II_COMPILER_USE_VECTOR_ARITHMETICS
-/* Defined if the prototype of abort() has a no-throw exception specification.
- */
-#cmakedefine DEAL_II_ABORT_NOTHROW_EXCEPTION
-
/* If already available, do not define at all. Otherwise, define to
* __func__ if that is available. In all other cases, indicate that no
* information about the present function is available for this compiler.
*/
#cmakedefine DEAL_II_MEMBER_ARRAY_SPECIALIZATION_BUG
-/* Defined if the compiler requires the use of the template keyword for
- * disambiguation keyword in certain contexts in which it is not supposed to
- * do so. For the exact failure mode, look at aclocal.m4 in the top-level
- * directory.
- */
-#cmakedefine DEAL_II_TEMPL_OP_DISAMBIGUATION_BUG
-
/* Defined if the compiler does not honor the explicit keyword on template
* constructors.
*/
#include <deal.II/base/types.h>
#endif
+