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

error : identifier "__is_assignable" is undefined

Dany_G_
Beginner
3,159 Views

 

Hi!

There is a following error with Intel Parallel Studio 2016.2.180 and Visual Studio 2015

1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\type_traits(550): error : identifier "__is_assignable" is undefined
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\type_traits(550): error : type name is not allowed
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\type_traits(550): error : type name is not allowed
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\type_traits(550): error : identifier "__is_assignable" is undefined
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\type_traits(550): error : type name is not allowed
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\type_traits(550): error : type name is not allowed

How can I solve it?

Thanks!

0 Kudos
16 Replies
Melanie_B_Intel
Employee
3,159 Views

This is new syntax which Microsoft introduced in vs2015 update 2, released just yesterday. Our 16.0 update 2 doesn't yet support this, but it will be supported in 16.0 update 3.  DPD200378147 in our internal bugs database is tracking this issue.  Sorry for the trouble. 

--Melanie

0 Kudos
Garipov__Ruslan
Beginner
3,159 Views

@Melanie Blower

Can you tell us when Intel C++ Compiler 16.0 Update 3 will be available?

Thanks!

0 Kudos
Melanie_B_Intel
Employee
3,159 Views

Intel doesn't generally publish the dates of upcoming releases.

Judy Ward suggested this workaround.  It will help you to get past this compilation problem although don't rely on it for a correct answer (if your program isn't actually using __is_assignable than you'll be fine)

If you aren't relying on the correctness of is_assignable, is_copy_assignable or is_move_assignable you could use this workaround:

 

-D__is_assignable=__is_trivially_assignable

 

This would cause those 3 type traits to sometimes return FALSE when they should return TRUE (i.e. if the assignment involved non trivial operations).

Hope this is of some help

--Melanie

0 Kudos
georg-conrads
Beginner
3,159 Views

Hi

i would like to suggest to fix this issue as high priority.

Firstly we need the fixes included in VS2015 update2.

Revert VS2015 to update 1 is quite difficult.

This works around is quite dangerous if indirectly you use these calls (is_assignable, is_copy_assignable or is_move_assignable) like Boost....

please inform us about when you plan a fix update.

Thanks

0 Kudos
Feilong_H_Intel
Employee
3,159 Views

Hi Georg,

We have forwarded your concerns to engineering team.

Thanks.

0 Kudos
dima_s_
Beginner
3,159 Views

Hello,

Can you explain how to use this:-D__is_assignable=__is_trivially_assignable

Thanks.

0 Kudos
Feilong_H_Intel
Employee
3,159 Views

Hi dima,

Add that to your compilation command line.  Let's say, your current command line is

icc -c -O2 -ipo a.c

Change it to

icc -c -O2 -ipo -D__is_assignable=__is_trivially_assignable a.c

0 Kudos
Patz_L_
Beginner
3,159 Views

I still have error  "identifier __is_assignable is undefined" with update 3 of intel compiler.
Is that normal?

I noticed the error one month ago after the update of Visual Studio 2015, and directly found this page.
Melanie's trick works well anyway (I actually use "#define __is_assignable  __is_trivially_assignable", instead of a compiler option)

0 Kudos
Feilong_H_Intel
Employee
3,159 Views

Hi Patz,

(Updated on May 5)

16.0 Update 3 support the type_traits header in VC++ now.  If you still see problem compatibility issue with that header, please let me know and upload a small test case.

Thanks.

0 Kudos
Feilong_H_Intel
Employee
3,159 Views

Hi Iceflower,

I upgraded my VS Enterprise 2015 to 2015 Update 2.  Unfortunately I failed to reproduce the error with the small test case above.  Did you use any compiler options?  If possible, please upload your solution in this thread.

0 Kudos
Patz_L_
Beginner
3,159 Views

I confirm Iceflower's post: With his tiny program, I get exactly the same errors .
I'm using the default project compilation switches.

I'm using Visual Studio 2015 pro update 2 (I only installed the visual C++ compiler, and the Clang compiler. No other component)
 

0 Kudos
Patz_L_
Beginner
3,159 Views

I just discovered a difference:
It compiles for the platform x86, but it does not compile for x64 (my default platform)

IceFlower, does the platform make a difference for you too?

0 Kudos
Patz_L_
Beginner
3,159 Views

Thanks Iceflower.
I had obviously both update 2 and 3 were installed. (I have no idea what Intel software Manager does)
I uninstalled everything from Intel, and reinstalled the update 3.

It now works

0 Kudos
Feilong_H_Intel
Employee
3,159 Views

Hi Patz,

Glad to hear that the problem is solved in Update 3.  Thank you for your testing.

0 Kudos
TimP
Honored Contributor III
3,159 Views

This problem cropped up here (with more recent Intel C++) when I "upgraded" from the November release of Windows 10 to current preview build 14352.  I'm trying a repair on VS2015 (Community). 

I'm somewhat disappointed in the Windows preview build.  I spent hours trying the linux subsystem which provides a gcc 4.8 (no OpenMP 4 support) and has too many symlink related failures.  Don't see why this should affect Windows build tools.

0 Kudos
Joe_T_1
Beginner
3,159 Views

I'm getting this error message with Visual studio 14.0.25431.01 update 3 and Intel Parallel Studio XE 2016 Update 4, was this not fixed in Update 4?

0 Kudos
Reply