Boost logo

Boost :

Subject: Re: [boost] [type_traits] extension has_operator_xxx - conforming to coding guidelines for ICE
From: Vicente Botet (vicente.botet_at_[hidden])
Date: 2011-02-03 18:02:55

Frédéric Bron wrote:
>> Don't use dependent default parameters for non-type template parameters.
>> For example:
>> template <class T, int I = ::boost::is_integral<T>::value> // Error
>> can't deduce value of I in some cases.
>> struct foobar;
>> Rationale: this kind of usage fails for Borland C++. Note that this is
>> only an issue where the default value is dependent upon a previous
>> template parameter, for example the following is fine:
> Is there any known workaround for this? In my case, int is replaced by
> bool but I think it is the same issue.


you could try to add an indirection.

template <class T, bool B>
struct foobar_aux;

template <class T>
struct foobar : foobar_aux<T, ::boost::is_integral<T>::value> {};


View this message in context:
Sent from the Boost - Dev mailing list archive at

Boost list run by bdawes at, gregod at, cpdaniel at, john at