Commit 1c259e8b by Marc Glisse Committed by Marc Glisse

re PR libstdc++/56111 ({float,double,long double} complex not accepted anymore)

2013-02-13  Marc Glisse  <marc.glisse@inria.fr>

	PR libstdc++/56111
	* include/std/complex (complex): Undefine.
	* include/c_compatibility/complex.h (complex): Only undefine if
	<complex> has been included.
	* testsuite/26_numerics/complex/56111.cc: New testcase.

From-SVN: r196034
parent 9e3a83c1
2013-02-13 Marc Glisse <marc.glisse@inria.fr>
PR libstdc++/56111
* include/std/complex (complex): Undefine.
* include/c_compatibility/complex.h (complex): Only undefine if
<complex> has been included.
* testsuite/26_numerics/complex/56111.cc: New testcase.
2013-02-13 François Dumont <fdumont@gcc.gnu.org>
* include/bits/hashtable_policy.h (_Hash_code_base): Restore
......
......@@ -34,7 +34,10 @@
#if _GLIBCXX_HAVE_COMPLEX_H
# include_next <complex.h>
# undef complex
# ifdef _GLIBCXX_COMPLEX
// See PR56111, keep the macro in C++03 if possible.
# undef complex
# endif
#endif
#ifndef _GLIBCXX_COMPLEX_H
......
......@@ -44,6 +44,9 @@
#include <cmath>
#include <sstream>
// Get rid of a macro possibly defined in <complex.h>
#undef complex
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
......
// { dg-do compile }
// { dg-options "-std=c++98" }
// Copyright (C) 2013 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
// libstdc++/56111
// In C++03, we try to keep the macro "complex" as long as it does not
// conflict (std::complex).
#include <bits/c++config.h>
#if _GLIBCXX_HAVE_COMPLEX_H
# include <complex.h>
#endif
int main()
{
#if _GLIBCXX_HAVE_COMPLEX_H
double complex x = .5;
double complex y = cacos (x);
(void)y;
#endif
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment