Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2001-09-22 09:22:53


Looking at the recent patch to functional/function_test.cpp:

// Revision 1.2 2001/09/22 11:52:24 johnmaddock
// Intel C++ fixes: no void return types supported.

[...]

#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(__ICL)

it seems to me that this uncovers a defect in the config system. The above
should really read

#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) &&
!defined(BOOST_NO_VOID_RETURNS)

Also, there is no BOOST_NO_PARTIAL_ORDERING. I think that
BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING has 'mutated' to cover this
functionality; its original intent, as we've discussed recently, was to
detect whether

template<class T> void f(T const &);

and

template<class T> void f(T *); // simplified

can be partially ordered. But since it's not clear whether such a behavior
is conforming, this macro, if retained, does not belong to the 'defects'
config section. My opinion is that this macro should be removed, because
it's not really useful; the motivating example - choosing between a function
object and a function pointer - is further complicated by the fact that some
compilers bind const references to functions, so we'd need an additional
macro for that.

Executive summary:

+ BOOST_NO_VOID_RETURNS
+ BOOST_NO_PARTIAL_ORDERING
- BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING

;-)

--
Peter Dimov
Multi Media Ltd.

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk