]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/26_numerics/complex/dr844.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 26_numerics / complex / dr844.cc
CommitLineData
be58e01d 1// { dg-do run { target c++11 } }
2ec89d4f 2// 2008-06-12 Paolo Carlini <paolo.carlini@oracle.com>
3//
fbd26352 4// Copyright (C) 2008-2019 Free Software Foundation, Inc.
2ec89d4f 5//
6// This file is part of the GNU ISO C++ Library. This library is free
7// software; you can redistribute it and/or modify it under the
8// terms of the GNU General Public License as published by the
6bc9506f 9// Free Software Foundation; either version 3, or (at your option)
2ec89d4f 10// any later version.
11//
12// This library is distributed in the hope that it will be useful,
13// but WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15// GNU General Public License for more details.
16//
17// You should have received a copy of the GNU General Public License along
6bc9506f 18// with this library; see the file COPYING3. If not see
19// <http://www.gnu.org/licenses/>.
2ec89d4f 20
21#include <complex>
22#include <testsuite_hooks.h>
23#include <testsuite_tr1.h>
24
cd13c6c8 25// In C++11 mode we used to implement the resolution of
2ec89d4f 26// DR 844. complex pow return type is ambiguous.
cd13c6c8 27// However, doing that causes all sorts of issues, see, for example:
28// http://gcc.gnu.org/ml/libstdc++/2013-01/msg00058.html
29// and also PR57974.
2ec89d4f 30void test01()
31{
2ec89d4f 32 using __gnu_test::check_ret_type;
33
34 typedef std::complex<float> cmplx_f_type;
35 typedef std::complex<double> cmplx_d_type;
36 typedef std::complex<long double> cmplx_ld_type;
37
38 const int i1 = 1;
39 const float f1 = 1.0f;
40 const double d1 = 1.0;
41 const long double ld1 = 1.0l;
42
cd13c6c8 43 check_ret_type<cmplx_f_type>(std::pow(cmplx_f_type(f1, f1), i1));
2ec89d4f 44 check_ret_type<cmplx_d_type>(std::pow(cmplx_d_type(d1, d1), i1));
45 check_ret_type<cmplx_ld_type>(std::pow(cmplx_ld_type(ld1, ld1), i1));
46}
47
48int main()
49{
50 test01();
51 return 0;
52}