Hi!
Though Intel C++ compiles this without complaint
gcc fails with ICE on this code snippet, which is
preprocessor output of boost code:
struct void_ {};
template<
bool C
, typename T1
, typename T2
>
struct if_c
{
typedef T1 type;
};
template<
typename T1
, typename T2
>
struct if_c<false,T1,T2>
{
typedef T2 type;
};
template<
typename C = void_
, typename T1 = void_
, typename T2 = void_
>
struct if_
{
private:
typedef if_c<
static_cast<bool>(C::value)
, T1
, T2
> almost_type_;
public:
typedef typename almost_type_::type type;
};
int main() {
typedef if_<true_, double, int>::type D;
D d;
}
-----------------------------------------------------
A resolution with which g++ is happy again is:
struct if_
{
private:
enum { value = static_cast<bool>(C::value) };
typedef if_c<
value
, T1
, T2
> almost_type_;
etc.
Does this solution have any impact on compilation time?
Markus
--
Build your own Expression Template Library with Daixtrose!
Visit http://daixtrose.sourceforge.net/
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost