Work around yet another sunpro bug, where it complains about an ambiguity

between A and A.
This commit is contained in:
Marc Glisse 2006-02-28 16:03:31 +00:00
parent cad29c7288
commit 0756f34663
3 changed files with 72 additions and 1 deletions

1
.gitattributes vendored
View File

@ -393,6 +393,7 @@ Coin/demo/Coin/Terrain/terrain.vcproj -text
Coin/demo/Coin/Triangulation_3/triangulation_3.sln -text
Coin/demo/Coin/Triangulation_3/triangulation_3.vcproj -text
Configuration/config/testfiles/CGAL_CFG_DEEP_DEPENDENT_TEMPLATE_BUG.C -text
Configuration/config/testfiles/CGAL_CFG_OUTOFLINE_MEMBER_DEFINITION_BUG.C -text
Configuration/config/testfiles/CGAL_CFG_SUNPRO_RWSTD.C -text
Convex_hull_2/demo/Convex_hull_2/convex_hull_2.vcproj -text
Convex_hull_2/doc_tex/Convex_hull_2/saarhull.eps -text

View File

@ -0,0 +1,54 @@
// 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: svn+ssh://scm.gforge.inria.fr/svn/cgal/trunk/Configuration/config/testfiles/CGAL_CFG_OUTOFLINE_MEMBER_DEFINITION_BUG.C $
// $Id: CGAL_CFG_OUTOFLINE_MEMBER_DEFINITION_BUG.C 28738 2006-02-23 14:30:13Z glisse $
//
//
// Author(s) : Marc Glisse
// ---------------------------------------------------------------------
// A short test program to evaluate a C++ compiler.
// This program is used by cgal_configure.
// The following documentation will be pasted in the generated configfile.
// ---------------------------------------------------------------------
//| This flag is set if the compiler complains about an ambiguity between
//| a type and itself when some members are defined out of line. This is
//| a Sun CC bug.
template < typename U >
struct B
{
struct A
{
typedef char C;
};
A* f ( typename A :: C );
};
template < class U >
typename B < U > :: A*
B < U > :: f ( typename A :: C )
{
return 0;
}
int main()
{
return 0;
}

View File

@ -1433,7 +1433,21 @@ protected:
* \return A pointer to the newly created node.
*/
Node* _allocate_node (const Type& object,
typename Node::Node_color color);
typename Node::Node_color color)
#ifdef CGAL_CFG_OUTOFLINE_MEMBER_DEFINITION_BUG
{
CGAL_multiset_assertion (color != Node::DUMMY_BEGIN &&
color != Node::DUMMY_END);
Node* new_node = node_alloc.allocate(1);
node_alloc.construct(new_node, beginNode);
new_node->init(object, color);
return (new_node);
}
#else
;
#endif
/*!
* De-allocate a tree node.
@ -3864,6 +3878,7 @@ void Multiset<Type, Compare, Allocator>::_remove_fixup (Node* nodeP,
//---------------------------------------------------------
// Allocate and initialize new tree node.
//
#ifndef CGAL_CFG_OUTOFLINE_MEMBER_DEFINITION_BUG
template <class Type, class Compare, typename Allocator>
typename Multiset<Type, Compare, Allocator>::Node*
Multiset<Type, Compare, Allocator>::_allocate_node
@ -3879,6 +3894,7 @@ Multiset<Type, Compare, Allocator>::_allocate_node
new_node->init(object, color);
return (new_node);
}
#endif
//---------------------------------------------------------
// De-allocate a tree node.