#5669 closed Bugs (fixed)
Intel compiler failure to compile duration.hpp
Reported by: | 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 , 11 years ago
comment:3 by , 11 years ago
Intel created a ticket in their internal bug tracking system. Hopefully it will be fixed soon.
comment:4 by , 11 years ago
Milestone: | To Be Determined → Boost 1.48.0 |
---|
comment:5 by , 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?
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