mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-27 22:03:57 +08:00
complex (pow(const complex<>&, int)): Enable in C++11 mode too.
2013-07-25 Paolo Carlini <paolo.carlini@oracle.com> * include/std/complex (pow(const complex<>&, int)): Enable in C++11 mode too. * testsuite/26_numerics/complex/dr844.cc: Adjust. * doc/xml/manual/intro.xml: Update. From-SVN: r201253
This commit is contained in:
parent
41a7c2158d
commit
4e30cb71f9
@ -1,11 +1,18 @@
|
||||
2013-07-25 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
* include/std/complex (pow(const complex<>&, int)): Enable in
|
||||
C++11 mode too.
|
||||
* testsuite/26_numerics/complex/dr844.cc: Adjust.
|
||||
* doc/xml/manual/intro.xml: Update.
|
||||
|
||||
2013-07-25 Tim Shen <timshen91@gmail.com>
|
||||
|
||||
Add documents and comments.
|
||||
* include/bits/regex.h: Documents and comments.
|
||||
* include/bits/regex_grep_matcher.h: Likewise.
|
||||
* include/bits/regex_grep_matcher.tcc: Likewise.
|
||||
* testsuite/28_regex/iterators/regex_iterator/char/string_position_01.cc:
|
||||
New.
|
||||
* testsuite/28_regex/iterators/regex_iterator/char/
|
||||
string_position_01.cc: New.
|
||||
|
||||
2013-07-24 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
|
@ -791,12 +791,6 @@ requirements of the license of GCC.
|
||||
<listitem><para>Add the overload.
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#844">844</link>:
|
||||
<emphasis>complex pow return type is ambiguous</emphasis>
|
||||
</term>
|
||||
<listitem><para>In C++11 mode, remove the pow(complex<T>, int) signature.
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#853">853</link>:
|
||||
<emphasis>to_string needs updating with zero and one</emphasis>
|
||||
</term>
|
||||
|
@ -88,11 +88,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
template<typename _Tp> complex<_Tp> log(const complex<_Tp>&);
|
||||
/// Return complex base 10 logarithm of @a z.
|
||||
template<typename _Tp> complex<_Tp> log10(const complex<_Tp>&);
|
||||
#if __cplusplus < 201103L
|
||||
// DR 844.
|
||||
/// Return @a x to the @a y'th power.
|
||||
template<typename _Tp> complex<_Tp> pow(const complex<_Tp>&, int);
|
||||
#endif
|
||||
/// Return @a x to the @a y'th power.
|
||||
template<typename _Tp> complex<_Tp> pow(const complex<_Tp>&, const _Tp&);
|
||||
/// Return @a x to the @a y'th power.
|
||||
@ -955,7 +952,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
// 26.2.8/9 pow(__x, __y): Returns the complex power base of __x
|
||||
// raised to the __y-th power. The branch
|
||||
// cut is on the negative axis.
|
||||
#if __cplusplus < 201103L
|
||||
template<typename _Tp>
|
||||
complex<_Tp>
|
||||
__complex_pow_unsigned(complex<_Tp> __x, unsigned __n)
|
||||
@ -972,8 +968,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
return __y;
|
||||
}
|
||||
|
||||
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
||||
// In C++11 mode we used to implement the resolution of
|
||||
// DR 844. complex pow return type is ambiguous.
|
||||
// thus the following overload was disabled in that mode. However, doing
|
||||
// that causes all sorts of issues, see, for example:
|
||||
// http://gcc.gnu.org/ml/libstdc++/2013-01/msg00058.html
|
||||
// and also PR57974.
|
||||
template<typename _Tp>
|
||||
inline complex<_Tp>
|
||||
pow(const complex<_Tp>& __z, int __n)
|
||||
@ -982,7 +982,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
? complex<_Tp>(1) / std::__complex_pow_unsigned(__z, -(unsigned)__n)
|
||||
: std::__complex_pow_unsigned(__z, __n);
|
||||
}
|
||||
#endif
|
||||
|
||||
template<typename _Tp>
|
||||
complex<_Tp>
|
||||
|
@ -22,7 +22,11 @@
|
||||
#include <testsuite_hooks.h>
|
||||
#include <testsuite_tr1.h>
|
||||
|
||||
// In C++11 mode we used to implement the resolution of
|
||||
// DR 844. complex pow return type is ambiguous.
|
||||
// However, doing that causes all sorts of issues, see, for example:
|
||||
// http://gcc.gnu.org/ml/libstdc++/2013-01/msg00058.html
|
||||
// and also PR57974.
|
||||
void test01()
|
||||
{
|
||||
bool test __attribute__((unused)) = true;
|
||||
@ -37,9 +41,7 @@ void test01()
|
||||
const double d1 = 1.0;
|
||||
const long double ld1 = 1.0l;
|
||||
|
||||
check_ret_type<cmplx_d_type>(std::pow(cmplx_f_type(f1, f1), i1));
|
||||
VERIFY( std::pow(cmplx_f_type(f1, f1), i1)
|
||||
== std::pow(cmplx_d_type(f1, f1), double(i1)) );
|
||||
check_ret_type<cmplx_f_type>(std::pow(cmplx_f_type(f1, f1), i1));
|
||||
check_ret_type<cmplx_d_type>(std::pow(cmplx_d_type(d1, d1), i1));
|
||||
check_ret_type<cmplx_ld_type>(std::pow(cmplx_ld_type(ld1, ld1), i1));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user