Remove obsolete config flags

CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG and
CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG_2.
This commit is contained in:
Sylvain Pion 2007-08-08 14:50:01 +00:00
parent 8258484ac9
commit f2a1b260a4
5 changed files with 22 additions and 444 deletions

View File

@ -89,265 +89,61 @@ public:
#ifdef CGAL_HAS_VARIADIC_TEMPLATES #ifdef CGAL_HAS_VARIADIC_TEMPLATES
template <typename... Args> template <typename... Args>
result_type result_type
operator()(const Args&... args) const operator()(const Args&... args) const;
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
;
#else
{
try
{
CGAL_PROFILER(std::string("calls to : ") + std::string(CGAL_PRETTY_FUNCTION));
Protect_FPU_rounding<Protection> P;
Ares res = ap(c2a(args)...);
if (! is_indeterminate(res))
return res;
}
catch (Interval_nt_advanced::unsafe_comparison) {}
CGAL_PROFILER(std::string("failures of : ") + std::string(CGAL_PRETTY_FUNCTION));
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
return ep(c2e(args)...);
}
#endif
#else #else
template <class A1> template <class A1>
result_type result_type
operator()(const A1 &a1) const operator()(const A1 &a1) const;
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
;
#else
{
try
{
CGAL_PROFILER(std::string("calls to : ") + std::string(CGAL_PRETTY_FUNCTION));
Protect_FPU_rounding<Protection> P;
Ares res = ap(c2a(a1));
if (! is_indeterminate(res))
return res;
}
catch (Interval_nt_advanced::unsafe_comparison) {}
CGAL_PROFILER(std::string("failures of : ") + std::string(CGAL_PRETTY_FUNCTION));
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
return ep(c2e(a1));
}
#endif
template <class A1, class A2> template <class A1, class A2>
result_type result_type
operator()(const A1 &a1, const A2 &a2) const operator()(const A1 &a1, const A2 &a2) const;
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
;
#else
{
try
{
CGAL_PROFILER(std::string("calls to : ") + std::string(CGAL_PRETTY_FUNCTION));
Protect_FPU_rounding<Protection> P;
Ares res = ap(c2a(a1), c2a(a2));
if (! is_indeterminate(res))
return res;
}
catch (Interval_nt_advanced::unsafe_comparison) {}
CGAL_PROFILER(std::string("failures of : ") + std::string(CGAL_PRETTY_FUNCTION));
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
return ep(c2e(a1), c2e(a2));
}
#endif
template <class A1, class A2, class A3> template <class A1, class A2, class A3>
result_type result_type
operator()(const A1 &a1, const A2 &a2, const A3 &a3) const operator()(const A1 &a1, const A2 &a2, const A3 &a3) const;
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
;
#else
{
try
{
CGAL_PROFILER(std::string("calls to : ") + std::string(CGAL_PRETTY_FUNCTION));
Protect_FPU_rounding<Protection> P;
Ares res = ap(c2a(a1), c2a(a2), c2a(a3));
if (! is_indeterminate(res))
return res;
}
catch (Interval_nt_advanced::unsafe_comparison) {}
CGAL_PROFILER(std::string("failures of : ") + std::string(CGAL_PRETTY_FUNCTION));
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
return ep(c2e(a1), c2e(a2), c2e(a3));
}
#endif
template <class A1, class A2, class A3, class A4> template <class A1, class A2, class A3, class A4>
result_type result_type
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4) const operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4) const;
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
;
#else
{
try
{
CGAL_PROFILER(std::string("calls to : ") + std::string(CGAL_PRETTY_FUNCTION));
Protect_FPU_rounding<Protection> P;
Ares res = ap(c2a(a1), c2a(a2), c2a(a3), c2a(a4));
if (! is_indeterminate(res))
return res;
}
catch (Interval_nt_advanced::unsafe_comparison) {}
CGAL_PROFILER(std::string("failures of : ") + std::string(CGAL_PRETTY_FUNCTION));
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
return ep(c2e(a1), c2e(a2), c2e(a3), c2e(a4));
}
#endif
template <class A1, class A2, class A3, class A4, class A5> template <class A1, class A2, class A3, class A4, class A5>
result_type result_type
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
const A5 &a5) const const A5 &a5) const;
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
;
#else
{
try
{
CGAL_PROFILER(std::string("calls to : ") + std::string(CGAL_PRETTY_FUNCTION));
Protect_FPU_rounding<Protection> P;
Ares res = ap(c2a(a1), c2a(a2), c2a(a3), c2a(a4), c2a(a5));
if (! is_indeterminate(res))
return res;
}
catch (Interval_nt_advanced::unsafe_comparison) {}
CGAL_PROFILER(std::string("failures of : ") + std::string(CGAL_PRETTY_FUNCTION));
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
return ep(c2e(a1), c2e(a2), c2e(a3), c2e(a4), c2e(a5));
}
#endif
template <class A1, class A2, class A3, class A4, class A5, class A6> template <class A1, class A2, class A3, class A4, class A5, class A6>
result_type result_type
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
const A5 &a5, const A6 &a6) const const A5 &a5, const A6 &a6) const;
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
;
#else
{
try
{
CGAL_PROFILER(std::string("calls to : ") + std::string(CGAL_PRETTY_FUNCTION));
Protect_FPU_rounding<Protection> P;
Ares res = ap(c2a(a1), c2a(a2), c2a(a3), c2a(a4), c2a(a5), c2a(a6));
if (! is_indeterminate(res))
return res;
}
catch (Interval_nt_advanced::unsafe_comparison) {}
CGAL_PROFILER(std::string("failures of : ") + std::string(CGAL_PRETTY_FUNCTION));
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
return ep(c2e(a1), c2e(a2), c2e(a3), c2e(a4), c2e(a5), c2e(a6));
}
#endif
template <class A1, class A2, class A3, class A4, class A5, class A6, template <class A1, class A2, class A3, class A4, class A5, class A6,
class A7> class A7>
result_type result_type
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
const A5 &a5, const A6 &a6, const A7 &a7) const const A5 &a5, const A6 &a6, const A7 &a7) const;
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
;
#else
{
try
{
CGAL_PROFILER(std::string("calls to : ") + std::string(CGAL_PRETTY_FUNCTION));
Protect_FPU_rounding<Protection> P;
Ares res = ap(c2a(a1), c2a(a2), c2a(a3), c2a(a4),
c2a(a5), c2a(a6), c2a(a7));
if (! is_indeterminate(res))
return res;
}
catch (Interval_nt_advanced::unsafe_comparison) {}
CGAL_PROFILER(std::string("failures of : ") + std::string(CGAL_PRETTY_FUNCTION));
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
return ep(c2e(a1), c2e(a2), c2e(a3), c2e(a4), c2e(a5), c2e(a6), c2e(a7));
}
#endif
template <class A1, class A2, class A3, class A4, class A5, class A6, template <class A1, class A2, class A3, class A4, class A5, class A6,
class A7, class A8> class A7, class A8>
result_type result_type
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8) const const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8) const;
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
;
#else
{
try
{
CGAL_PROFILER(std::string("calls to : ") + std::string(__PRETTY_FUNCTION__));
Protect_FPU_rounding<Protection> P;
Ares res = ap(c2a(a1), c2a(a2), c2a(a3), c2a(a4),
c2a(a5), c2a(a6), c2a(a7), c2a(a8) );
if (! is_indeterminate(res))
return res;
}
catch (Interval_nt_advanced::unsafe_comparison) {}
CGAL_PROFILER(std::string("failures of : ") + std::string(__PRETTY_FUNCTION__));
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
return ep(c2e(a1), c2e(a2), c2e(a3), c2e(a4),
c2e(a5), c2e(a6), c2e(a7), c2e(a8) );
}
#endif
template <class A1, class A2, class A3, class A4, class A5, class A6, template <class A1, class A2, class A3, class A4, class A5, class A6,
class A7, class A8, class A9> class A7, class A8, class A9>
result_type result_type
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8,
const A9 &a9) const const A9 &a9) const;
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
;
#else
{
try
{
CGAL_PROFILER(std::string("calls to : ") + std::string(__PRETTY_FUNCTION__));
Protect_FPU_rounding<Protection> P;
Ares res = ap(c2a(a1), c2a(a2), c2a(a3), c2a(a4),
c2a(a5), c2a(a6), c2a(a7), c2a(a8), c2a(a9) );
if (! is_indeterminate(res))
return res;
}
catch (Interval_nt_advanced::unsafe_comparison) {}
CGAL_PROFILER(std::string("failures of : ") + std::string(__PRETTY_FUNCTION__));
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
return ep(c2e(a1), c2e(a2), c2e(a3), c2e(a4),
c2e(a5), c2e(a6), c2e(a7), c2e(a8), c2e(a9) );
}
#endif
template <class A1, class A2, class A3, class A4, class A5, class A6, template <class A1, class A2, class A3, class A4, class A5, class A6,
class A7, class A8, class A9, class A10> class A7, class A8, class A9, class A10>
result_type result_type
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8,
const A9 &a9, const A10 &a10) const const A9 &a9, const A10 &a10) const;
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
;
#else
{
try
{
CGAL_PROFILER(std::string("calls to : ") + std::string(__PRETTY_FUNCTION__));
Protect_FPU_rounding<Protection> P;
Ares res = ap(c2a(a1), c2a(a2), c2a(a3), c2a(a4),
c2a(a5), c2a(a6), c2a(a7), c2a(a8), c2a(a9), c2a(a10) );
if (! is_indeterminate(res))
return res;
}
catch (Interval_nt_advanced::unsafe_comparison) {}
CGAL_PROFILER(std::string("failures of : ") + std::string(__PRETTY_FUNCTION__));
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
return ep(c2e(a1), c2e(a2), c2e(a3), c2e(a4),
c2e(a5), c2e(a6), c2e(a7), c2e(a8), c2e(a9), c2e(a10) );
}
#endif
// Idem for more than 10 arguments. Do it on demand. // Idem for more than 10 arguments. Do it on demand.
#endif #endif
@ -374,9 +170,9 @@ Filtered_predicate<EP,AP,C2E,C2A,Protection>::
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST); Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
return ep(c2e(args)...); return ep(c2e(args)...);
} }
#else #else
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
template <class EP, class AP, class C2E, class C2A, bool Protection> template <class EP, class AP, class C2E, class C2A, bool Protection>
template <class A1> template <class A1>
typename Filtered_predicate<EP,AP,C2E,C2A,Protection>::result_type typename Filtered_predicate<EP,AP,C2E,C2A,Protection>::result_type
@ -598,8 +394,6 @@ Filtered_predicate<EP,AP,C2E,C2A,Protection>::
#endif #endif
#endif
CGAL_END_NAMESPACE CGAL_END_NAMESPACE
#endif // CGAL_FILTERED_PREDICATE_H #endif // CGAL_FILTERED_PREDICATE_H

View File

@ -1,56 +0,0 @@
// Copyright (c) 2003 Utrecht University (The Netherlands),
// ETH Zurich (Switzerland), Freie Universitaet Berlin (Germany),
// INRIA Sophia-Antipolis (France), Martin-Luther-University Halle-Wittenberg
// (Germany), Max-Planck-Institute Saarbruecken (Germany), RISC Linz (Austria),
// and Tel-Aviv University (Israel). All rights reserved.
//
// This file is part of CGAL (www.cgal.org); you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; version 2.1 of the License.
// See the file LICENSE.LGPL distributed with CGAL.
//
// Licensees holding a valid commercial license may use this file in
// accordance with the commercial license agreement provided with the software.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
//
// $URL$
// $Id$
//
//
// Author(s) : Radu Ursu
// ---------------------------------------------------------------------
// A short test program to evaluate a C++ compiler.
// This program is used by install_cgal.
// The following documentation will be pasted in the generated configfile.
// ---------------------------------------------------------------------
//| The flag CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG is set,
//| if a compiler does not support the definition of member templates
//| out of line, i.e. outside class scope. The solution is to put the
//| definition inside the class. This is a feature of SunPro 5.5.
template <class A>
class B {
public:
typedef typename A::D Res;
template<class C>
Res fct(C *i);
};
template<class A>
template<class C> //syntax error
typename B<A>::Res
B<A>::fct(C *i)
{
typedef typename B<A>::Res R;
return R();
}
int main()
{
return 0;
}

View File

@ -1,53 +0,0 @@
// Copyright (c) 2004 Utrecht University (The Netherlands),
// ETH Zurich (Switzerland), Freie Universitaet Berlin (Germany),
// INRIA Sophia-Antipolis (France), Martin-Luther-University Halle-Wittenberg
// (Germany), Max-Planck-Institute Saarbruecken (Germany), RISC Linz (Austria),
// and Tel-Aviv University (Israel). All rights reserved.
//
// This file is part of CGAL (www.cgal.org); you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; version 2.1 of the License.
// See the file LICENSE.LGPL distributed with CGAL.
//
// Licensees holding a valid commercial license may use this file in
// accordance with the commercial license agreement provided with the software.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
//
// $URL$
// $Id$
//
//
// Author(s) : Laurent Rineau
// ---------------------------------------------------------------------
// A short test program to evaluate a C++ compiler.
// This program is used by install_cgal.
// The following documentation will be pasted in the generated configfile.
// ---------------------------------------------------------------------
//| The flag CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG_2 is set,
//| if a compiler does not support the definition of member templates
//| out of line, i.e. outside class scope. The solution is to put the
//| definition inside the class.
//| The difference with CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
//| is the return type of the member template.SunPro 5.5 should be OK with
//| this code.
template <class A>
class B {
public:
template<class C>
void fct(C *i);
};
template<class A>
template<class C>
void
B<A>::fct(C *i){
}
int main(){
return 0;
}

View File

@ -702,8 +702,6 @@ void clone(const Plane_map& H) const;
\precond |H.check_integrity_and_topological_planarity()| and \precond |H.check_integrity_and_topological_planarity()| and
|P| is empty.}*/ |P| is empty.}*/
#if ! defined(CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG)
template <typename LINKDA> template <typename LINKDA>
void clone_skeleton(const Plane_map& H, const LINKDA& L) const; void clone_skeleton(const Plane_map& H, const LINKDA& L) const;
/*{\Mop clones the skeleton of |H| into |P|. Afterwards |P| is a copy /*{\Mop clones the skeleton of |H| into |P|. Afterwards |P| is a copy
@ -716,56 +714,6 @@ objects.\\
\precond |H.check_integrity_and_topological_planarity()| and \precond |H.check_integrity_and_topological_planarity()| and
|P| is empty.}*/ |P| is empty.}*/
#else
template <typename LINKDA>
void clone_skeleton(const HDS& H, const LINKDA& L) const
{
CGAL_assertion(number_of_vertices()==0&&
number_of_halfedges()==0&&
number_of_faces()==0);
PM_const_decorator<HDS> DC(H);
CGAL_assertion((DC.check_integrity_and_topological_planarity(),1));
CGAL::Unique_hash_map<Vertex_const_iterator,Vertex_handle> Vnew;
CGAL::Unique_hash_map<Halfedge_const_iterator,Halfedge_handle> Hnew;
/* First clone all objects and store correspondance in the two maps.*/
Vertex_const_iterator vit, vend = H.vertices_end();
for (vit = H.vertices_begin(); vit!=vend; ++vit) {
Vertex_handle v = this->phds->vertices_push_back(Vertex_base());
Vnew[vit] = v;
}
Halfedge_const_iterator eit, eend = H.halfedges_end();
for (eit = H.halfedges_begin(); eit!=eend; ++(++eit)) {
Halfedge_handle e = this->phds->edges_push_back(Halfedge_base(),Halfedge_base());
Hnew[eit] = e; Hnew[eit->opposite()] = e->opposite();
}
/* Now copy topology.*/
Vertex_iterator vit2, vend2 = vertices_end();
for (vit = H.vertices_begin(), vit2 = vertices_begin();
vit2!=vend2; ++vit, ++vit2) {
mark(vit2) = DC.mark(vit);
point(vit2) = DC.point(vit);
if ( !DC.is_isolated(vit) )
vit2->set_halfedge(Hnew[vit->halfedge()]);
L(vit2,vit);
}
Halfedge_iterator eit2, eend2 = this->phds->halfedges_end();
for (eit = H.halfedges_begin(), eit2 = halfedges_begin();
eit2!=eend2; ++eit, ++eit2) {
eit2->set_prev(Hnew[eit->prev()]);
eit2->set_next(Hnew[eit->next()]);
eit2->set_vertex(Vnew[eit->vertex()]);
mark(eit2) = DC.mark(eit);
// eit2->set_face(Face_handle((Face*)&*(eit->face())));
L(eit2,eit);
// link to face of original
}
}
#endif
void reflecting_inversion() void reflecting_inversion()
/*{\Xop inverts the topological links corresponding to a reflecting /*{\Xop inverts the topological links corresponding to a reflecting
@ -906,7 +854,6 @@ void PM_decorator<HDS>::clone(const HDS& H) const
CGAL_assertion((this->check_integrity_and_topological_planarity(),1)); CGAL_assertion((this->check_integrity_and_topological_planarity(),1));
} }
#if ! defined(CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG)
template <typename HDS> template <typename HDS>
template <typename LINKDA> template <typename LINKDA>
@ -957,10 +904,6 @@ clone_skeleton(const HDS& H, const LINKDA& L) const
} }
} }
#endif
CGAL_END_NAMESPACE CGAL_END_NAMESPACE
#endif //CGAL_PM_DECORATOR_H
#endif //CGAL_PM_DECORATOR_H

View File

@ -51,89 +51,40 @@ public:
template <class A1> template <class A1>
result_type result_type
operator()(const A1 &a1) const operator()(const A1 &a1) const;
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
;
#else
{
return static_cast<result_type>(Certified_approx_predicate(a1));
}
#endif
template <class A1, class A2> template <class A1, class A2>
result_type result_type
operator()(const A1 &a1, const A2 &a2) const operator()(const A1 &a1, const A2 &a2) const;
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
;
#else
{
return static_cast<result_type>(Certified_approx_predicate(a1, a2));
}
#endif
template <class A1, class A2, class A3> template <class A1, class A2, class A3>
result_type result_type
operator()(const A1 &a1, const A2 &a2, const A3 &a3) const operator()(const A1 &a1, const A2 &a2, const A3 &a3) const;
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
;
#else
{
return static_cast<result_type>(Certified_approx_predicate(a1, a2, a3));
}
#endif
template <class A1, class A2, class A3, class A4> template <class A1, class A2, class A3, class A4>
result_type result_type
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4) const operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4) const;
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
;
#else
{
return static_cast<result_type>(Certified_approx_predicate(a1, a2, a3,a4));
}
#endif
template <class A1, class A2, class A3, class A4, class A5> template <class A1, class A2, class A3, class A4, class A5>
result_type result_type
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
const A5 &a5) const const A5 &a5) const;
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
;
#else
{
return static_cast<result_type>(Certified_approx_predicate(a1, a2, a3, a4, a5));
}
#endif
template <class A1, class A2, class A3, class A4, class A5, class A6> template <class A1, class A2, class A3, class A4, class A5, class A6>
result_type result_type
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
const A5 &a5, const A6 &a6) const const A5 &a5, const A6 &a6) const;
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
;
#else
{
return static_cast<result_type>(Certified_approx_predicate(a1, a2, a3, a4, a5, a6));
}
#endif
template <class A1, class A2, class A3, class A4, class A5, class A6, template <class A1, class A2, class A3, class A4, class A5, class A6,
class A7> class A7>
result_type result_type
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
const A5 &a5, const A6 &a6, const A7 &a7) const const A5 &a5, const A6 &a6, const A7 &a7) const;
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
;
#else
{
return static_cast<result_type>(Certified_approx_predicate(a1, a2, a3, a4, a5, a6, a7));
}
#endif
// Idem for more than 7 arguments. Do it on demand. // Idem for more than 7 arguments. Do it on demand.
}; };
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
template <class CAP> template <class CAP>
template <class A1> template <class A1>
typename Unfiltered_predicate_adaptor<CAP>::result_type typename Unfiltered_predicate_adaptor<CAP>::result_type
@ -189,7 +140,6 @@ Unfiltered_predicate_adaptor<CAP>::
{ {
return static_cast<result_type>(Certified_approx_predicate(a1, a2, a3, a4, a5, a6)); return static_cast<result_type>(Certified_approx_predicate(a1, a2, a3, a4, a5, a6));
} }
#endif
CGAL_END_NAMESPACE CGAL_END_NAMESPACE