Intel® C++ Compiler
Support and discussions for creating C++ code that runs on platforms based on Intel® processors.
7744 Discussions

c++ 19.2 compiler claims explicitly defaulted constructor as deleted

AxS
Beginner
632 Views

Hi,

While compiling c++17 code with intel c++ 19.2 compiler an error is raised for the following code:

// struct with default-constructor and destructor explicitly default.
// move and copy constructor and assignment operators deleted.
struct foo{
  foo() = default;
  foo(const foo&) = delete;
  foo(foo&&) = delete;
  foo& operator =(const foo&) = delete;
  foo& operator =(foo&&) = delete;
  ~foo() = default;
}
auto var = std::make_shared<foo>(); //<- error: default constructor is a deleted function

If I change line 4 to: 

foo(){}

it compiles without error. Does anyone know what I'm missing here? Or is it just a compiler bug? 

0 Kudos
9 Replies
MadhuK_Intel
Moderator
604 Views

Hi,

 

Thanks for reaching out to us.

 

We have tried the sample code which you have provided on windows(visual studio intel 19.2 compiler) and Linux machine (icc/icpc) with C++17 standard enabled.

The code was compiled and executed without any errors as shown in screenshots. 

In Visual Studio

MadhuK_Intel_3-1642594568640.png

 

 

The same code executed in Linux (Ubuntu)

MadhuK_Intel_0-1642593501909.png

 

Could you please share the complete sample reproducer code and steps to reproduce your error at our end?

And also please share the details of the operating system, oneAPI toolkit version.

 

Thanks & Regards,

Madhu

 

AxS
Beginner
595 Views

Hi Madhu,

Thanks for investigating. Although I can't find the screenshots you mentioned, but I believe you anyway.

The original code is under NDA, but I'll try to create a small NDA free project that reproduces the behaviour as soon as I've time for that.

Here is the other information you requested:

OS:

  • Windows 10 Pro Version: 21H2 Build: 19044.1466 with Windows Feature Experience Pack 120.2212.3920.0

 

oneAPI toolkit:

  • installed via w_BaseKit_p_2022.1.0.116_offline and w_HPCKit_p_2022.1.0.93_offline
  • Intel® C++ Compiler – toolkit version: 2022.1.0, extension version 22.0.16, Package ID: w_oneAPI_2022.0.0.161
  • Intel® C++ Compiler Classic – toolkit version: 2022.1.0, extension version 19.2.9.16, Package ID: w_oneAPI_2022.0.0.161
  • Intel® DPC++ Compatibility Tool – toolkit version: 2022.1.0, extension version 2022.0.0.16, Package ID: w_oneAPI_2022.0.0.97
  • Intel® oneAPI DPC++ Compiler – toolkit version: 2022.1.0, extension version 22.0.0.16, Package ID: w_oneAPI_2022.0.0.161

 

Visual Studio:

  • Microsoft Visual Studio Professional 2019 Version 16.11.9

 

As you can see, everything is quite up to date.

Best Regards,

Axel

AxS
Beginner
569 Views

Hi,

Here's a minimal project that shows the effect.

To produce the example I thought it would be a nice idea to provide a google-test project, but it wasn't. This is off topic but still worth to mention: obviously nuget packages (or other external references) can't be used together with the Intel compiler. After using the 'Solution-Explorer[Context-Menu]->Intel Compiler->Use Intel Compiler C++ Classic' function the nuget package reference was gone. Reinstalling the package to the project didn't help. So I had to configure additional include folders, libraries directories and referenced libraries manually (changing the package to another/newer version would break this manual configuration). There's a screenshots folder in the 7z showing what happend. The *-Microsoft images are the original settings after creating the project. The *-Intel images show what the 'Use Intel Compiler C++ Classic' made out of that. And the *-Intel,fixed show the manual fix.  The NuGet-Packages-Intel.png shows that VS believes the package is still installed after changing to the Intel compiler.

I know, I should make this a new case and I probably will.

Best Regards,

Axel

MadhuK_Intel
Moderator
522 Views

Hi,

 

The issue raised by you is reproducible when trying with Intel C++ compiler 19.2 from our end as well.

 

>>" I can't find the screenshots you mentioned"

Sorry for causing inconvenience, I have re-attached the screenshots, please refer.

 

In Visual Studio

MadhuK_Intel_0-1646394978259.png

Same code in Linux(ubuntu)

MadhuK_Intel_2-1646395072817.png

 

 

Could you please try compiling with Intel C++ compiler 2022 (icx/icpx) instead?

It is working as expected without throwing any such errors when we tried it from our end.

 

Also, Intel Classic Compiler will enter "Legacy Product Support" mode, signaling the end of regular updates. Please refer to the article below for more details.

https://www.intel.com/content/www/us/en/developer/articles/technical/adoption-of-llvm-complete-icx.h...

 

 

Regards,

Madhu

 

AxS
Beginner
512 Views

Hi,

The 2022 compiler works on that small sample, but it does't work for the 'real' project as the 2022 compiler/linker simply crashes (mostly with 'out of memory' although there are still more than 40GB of free RAM available) when used for that one. Especially the linker is eating memory (almost 10GB before it crashes for an application of about 16MB, when build with the 19.2 compiler and less than 8MB when build with the microsoft compiler). That's why I switched back to the 19.2 version: the 2022 completely fails to build and I haven't found a workaround for that. Your support didn't either yet. But that's another issue I already have posted.

Therefore it would be nice, if intel could keep the support for the classic compiler alive as long as the new compiler hasn't become much more stable.

Best Regards

Axel

AxS
Beginner
469 Views

Intel-Support has closed the ticket concerning the crashing compiler tools I mentioned above, because I didn't respond fast enough to a sub-topic (the not working IPO) because I have work to do and already wasted too much time with the faulty Intel tools. As if the main problem disappears by simply looking in another direction. For me, this is the end of the line. I give up using Intel development tools. They are a pain in the ass by producing more trouble than the result, if any at all, is worth. I won't renew. Intel lost another customer just because of their ignorance (or is it arrogance). Thinking about claiming my money back as the product, I paid for, doesn't work and obviously won't be fixed. Thus this topic can be closed too. Despite that, thank's for your effort.

MadhuK_Intel
Moderator
432 Views

Hi,


Sorry for the inconvenience caused.

>>Intel-Support has closed the ticket concerning the crashing compiler tools I mentioned above


Could you please provide us with the ticket number?


Thanks and Regards,

Madhu


AxS
Beginner
423 Views

Hi Madhu,

Thanks for trying to help. After asking for a refund, Intel support has re-opened that ticket by themselves already. And of course they asked me to provide further information by running the tools with special parameters. Because I had to proceed with my work, I've switch to another toolchain and I currently don't have time to hassle with that issue or waiting for Intel to get the problem fixed. So no offense but I'm out of this game.

Thanks again for your effort,

Axel

MadhuK_Intel
Moderator
351 Views

Hi,


We could not help you out and we apologize for the same. As per your suggestion, we are closing the thread. If you need any additional information, please post a new question as this thread will no longer be monitored by Intel.


Thanks & Regards,

Madhu


Reply