|
Boost : |
From: David Abrahams (dave_at_[hidden])
Date: 2003-03-18 09:48:29
Gottfried.Ganssauge_at_[hidden] writes:
>> it seems to me that these aren't actually legal specializations
>> (though I've never specialized functions before so I could be wrong).
>> Shouldn't that be:
>>
>> template <>
>> inline type_info type_id<Pointee>(boost::type<Pointee>*) {
>> return type_info(typeid(Pointee*));
>> }
>>
>> template <>
>> inline type_info type_id<const volatile Pointee&>(
>> boost::type<const volatile Pointee&>*) {
>> return type_info(typeid(Pointee*));
>> }
>>
> You're probably right, but the other compilers didn't
> complain... Anyway, that wasn't the cause of the problem; the
> problem seems to be that gcc-2.9x doesn't recognize the defaulted
> argument but insists on having an argument anyway. Now i have
> changed my specializations such that these have *no* arguments and
> now it works on all my compilers (MSVC6, VC7.1ß, gcc-2.95.3,
> gcc-3.2).
I think we need to keep the argument for VC6 at least; the problem is
one that shows up at link time because VC6 seems to distinguish
function template instantiations only by the types of the arguments
and not the template parameters. If you amend the patch so that it
still uses the default argument for VC6, I will be happy for Ralf to
apply it.
Beman, can we get this in under the wire? It only affects
Boost.Python and then only a new feature of Boost.Python.
-- Dave Abrahams Boost Consulting www.boost-consulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk