icc has problems with integral_constants used as values in template-parameters
There is a problem in current intel 17.02 compiler regarding integral_constants
and non-type template-parameters: Simplified example:
#include <type_traits>
template <bool b> struct A {};
int main()
{
A<std::is_integral<int>{}> a;
}
This code is fine in gcc and clang but not in intel icc. This form of working with integral_constants
can be found a lot in dune-typetree mainly related to is_flat_index<I0>{}
-like statements:
Possible workarounds:
- simply call
is_flat_index<I0>::value
or - introduce a variable-templates
template <int I>
constexpr is_flat_index<I> is_flat_index_v = {};