
AMDG On 04/19/2011 12:27 AM, Phil Nash wrote:
The following does not compile (GCC 4.2):
#include
template<typename T> void byRef( const T& v ) { }
// ...
byRef( boost::indeterminate );
I realise that indeterminate is actually a function. If I write my own, equivalent, function I can substitute it here and it compiles, however. I can't see what is stopping it from working in indeterminate's case - but I suspect it is to do with some of the operator overloading going on. I couldn't pin it down, though.
A function type cannot be const qualified under C++03.
I can take it by value, of course.
What am I missing?
Before you ask - yes this is boiled down code. In my real situation I have generic code that doesn't even know about tribool, so I can't special-case it. And I'd rather get to the bottom of why it doesn't work for me - even if the end result is "you can't do that".
Probably the easiest solution is to have the call site use boost::tribool(boost::indeterminate). In Christ, Steven Watanabe