Opened 11 years ago

Closed 11 years ago

Last modified 11 years ago

#5669 closed Bugs (fixed)

Intel compiler failure to compile duration.hpp

Reported by: Edward Rankin <erankin@…> Owned by: viboes
Milestone: Boost 1.48.0 Component: chrono
Version: Boost 1.47.0 Severity: Problem
Keywords: Cc:

Description

This ticket is to keep track of the issue first surfaced here: http://comments.gmane.org/gmane.comp.lib.boost.user/68421

and continued here: http://comments.gmane.org/gmane.comp.lib.boost.user/68784

In further discussion with Vicente, it turns out that the Intel Compiler (12.0 and 12.1 beta) for some strange reason requires an additional set of parenthesis around the first operand for the && operator, despite the existence of a set of parenthesis.

Essentially the following snippet won't work,

bool = ( (boost::is_convertible<typename Duration::rep, typename common_type<typename Duration::rep, Rep2>::type>::value) && (boost::is_convertible<Rep2, typename common_type<typename Duration::rep, Rep2>::type>::value) )

but

bool = ( ((boost::is_convertible<typename Duration::rep, typename common_type<typename Duration::rep, Rep2>::type>::value)) && (boost::is_convertible<Rep2, typename common_type<typename Duration::rep, Rep2>::type>::value) ) works.

This is almost certainly a bug in the Intel Compiler. I will be seeking additional advice on the dev ML and Intel Premier Support on this.

Change History (5)

comment:1 by Edward Rankin <erankin@…>, 11 years ago

I have decided to use the Intel Software forums first. You can follow the discussion with Intel reps here: http://software.intel.com/en-us/forums/showthread.php?t=84061

comment:2 by anonymous, 11 years ago

Resolution: fixed
Status: newclosed

Fix committed on #72938.

comment:3 by Edward Rankin <erankin@…>, 11 years ago

Intel created a ticket in their internal bug tracking system. Hopefully it will be fixed soon.

comment:4 by viboes, 11 years ago

Milestone: To Be DeterminedBoost 1.48.0

comment:5 by Edward Rankin <erankin@…>, 11 years ago

Intel has provided feedback that the issue has been resolved. I have tested to verify that it indeed works with Boost 1.48 (with the removal of the parenthesis). Vicente, do you plan to reverse the patch, now that Intel has fixed the compiler?

Note: See TracTickets for help on using tickets.