Boost logo

Boost :

From: Noel Belcourt (kbelco_at_[hidden])
Date: 2005-12-08 00:43:12


On Dec 7, 2005, at 12:02 PM, Eric Niebler wrote:

> Resending ... I figured I'd give this one last try before marking
> xpressive unusable on MetroWerks. Any clues?
>
>
> Eric Niebler wrote:
>> Does cw-9_4 really support partial specialization of class templates?
>> According to boost.config it does. xpressive's tests are failing on
>> this
>> compiler, with heaps of errors like:
>>
>> ### mwcc Compiler:
>> # In:
>> ..\boost\xpressive\detail\static\productions\independent_compiler.hpp
>> # From: ..\libs\xpressive\test\misc1.cpp
>> # -----------------------------------------
>> # 128: : transform_compiler<arg_transform,
>> xpressive::detail::seq_tag>
>> # Error: ^
>> # illegal partial specialization
>>

I get similar problems from CW 9.6 just syntax checking
independent_compiler.hpp. I see two ways around it, both less than
desirable.

1) add the missing default template argument to the compiler
specialization

     template<bool PositiveT>
     struct compiler<xpressive::detail::lookahead_tag<PositiveT>,
xpressive::detail::seq_tag, void>
       : branch_compiler<xpressive::detail::lookahead_branch<PositiveT>,
xpressive::detail::ind_tag>
     {
     };

2) fully specialize for the bool argument

     template<>
     struct compiler<xpressive::detail::lookahead_tag<true>,
xpressive::detail::seq_tag, void>
       : branch_compiler<xpressive::detail::lookahead_branch<true>,
xpressive::detail::ind_tag>
     {
     };

     template<>
     struct compiler<xpressive::detail::lookahead_tag<false>,
xpressive::detail::seq_tag, void>
       : branch_compiler<xpressive::detail::lookahead_branch<false>,
xpressive::detail::ind_tag>
     {
     };

I know there are several outstanding template specialization bugs in
9.6. Metrowerks suggested I upgrade to the last Mac release 10.0. Not
sure if these problems would be fixed though.

-- Noel


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