Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.

C++14 recursive lambda missing operator()

olzhas_r_
New Contributor I
749 Views
void foo() {
  auto bar = [](auto& self) -> void {
    return self(self);
  };
  bar(bar);
}

 

icc 17.0.2 produces the following error:

main.cc(3): error: call of an object of a class type without appropriate operator() or conversion functions to pointer-to-function type
      return self(self);
             ^
          detected during instantiation of function "lambda [](auto &)->void [with <auto-1>=lambda [](auto &)->void]" at line 5

 

0 Kudos
4 Replies
Yuan_C_Intel
Employee
749 Views

Hi,

Thank you for reporting this issue.

Could you report this in our new cloud service at www.intel.com/supporttickets?

Our support engineer will follow up on this bug report.

Thank you!

0 Kudos
olzhas_r_
New Contributor I
749 Views

Hi Yolanda,

Could you please fill this bug with the 'support' website for me?

It feels so much hassle; I gave up quick.

 

0 Kudos
olzhas_r_
New Contributor I
749 Views

This is still an issue with icc 18 initial release.

0 Kudos
Melanie_B_Intel
Employee
749 Views

I created cmplrs-45676 in our internal bugs database, thanks for bringing this to our attention again. --Melanie

0 Kudos
Reply