Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6921709
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 27, 20262026-05-27T10:18:42+00:00 2026-05-27T10:18:42+00:00

The code below fails to compile with g++ version 4.5.0 using the -std=c++0x switch.

  • 0

The code below fails to compile with g++ version 4.5.0 using the -std=c++0x switch. I get the following error message:

error: no match for 'operator+' in 'std::pow [with _Tp = float, _Up = int, typename __gnu_cxx::__promote_2<_Tp, _Up>::__type = double](((const std::complex<float>&)((const std::complex<float>*)(& x))), ((const int&)((const int*)(&2)))) + y'

I believe this relates to the Assignable requirement mentioned here. Should I define my own copy assignment operator for complex? If so, how?

#include <complex>
using namespace std;

int main(int argc, char *argv[]) {
  complex<float> x,y;
  x = pow(x,2);      // ok
  x = x        + y;  // ok
  x = pow(x,2) + y;  // error
  return 0;
}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-27T10:18:42+00:00Added an answer on May 27, 2026 at 10:18 am

    [cmplx.over]/p3 specifies additional overloads for pow when complex is involved:

    Function template pow shall have additional overloads sufficient to
    ensure, for a call with at least one argument of type complex<T>:

    1. If either argument has type complex<long double> or type long double, then both arguments are effectively cast to complex<long
      double>
      .

    2. Otherwise, if either argument has type complex<double>, double, or an integer type, then both arguments are effectively cast to
      complex<double>.

    3. Otherwise, if either argument has type complex<float> or float, then both arguments are effectively cast to complex<float>.

    The 2 is being promoted to a double, and pow(complex<float>, double) returns a complex<double>.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have the demonstrator code below that fails to compile with the error: Occurs
I am trying to get the below code snippet to compile. But it fails
Do you know why the code below fails to compile? #include <iostream> namespace C
The code below compiles fine with VS2010 but fails to compile with gcc 4.6.1:
In the below code , why b1.subtract() fails . Please explain me the reason
The code below gives me this mysterious error, and i cannot fathom it. I
The code below gives an error: Property 'Int32 Key' is not defined for type
The code below is the code i am using. It works fine in thunderbird
I've installed GCC 3.4 to /opt/gcc-3.4, and I'm using it to compile legacy code
The Below code does not fail to compile but however at runtime it says

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.