26_numerics fails

Paolo Carlini pcarlini@unitus.it
Fri Jan 11 08:55:00 GMT 2002


Hi,

thanks to the help of Peter's nice "distillation" work, I'm trying to understand
more of the valarray regression.
In Peter PR I find:

template<template<class> class _Oper,
    template<class, class> class _Meta, class _Dom> struct _UnClos;

template<template<class> class _Oper,
    template<class, class> class _Meta1,
    template<class, class> class _Meta2,
    class _Dom1, class _Dom2> class _BinClos;

and then:

template<template<class> class _Oper, typename _Tp>
struct _BinClos<_Oper,_ValArray,_Constant,_Tp,_Tp>
    : _BinBase2<_Oper,valarray<_Tp> > {
    typedef _BinBase2<_Oper,valarray<_Tp> > _Base;
    typedef typename _Base::value_type value_type;

    _BinClos (const valarray<_Tp>& __v, const _Tp& __t)
     : _Base (__v, __t) {}
};

The testcase would become *compilable* with the current compiler if the the
_BinClos declaration were changed to:

template<template<class> class _Oper,
    template<class, class> class _Meta1,
    template<class, class> class _Meta2,
    class _Dom1, class _Dom2> struct _BinClos;
                              ^^^^^^

This change would also make _BinClos declaration analogous to _UnClos
declaration: this sounds /v/e/r/y /n/a/i/v/e/l/y quite good to me...

Thoughts?

Or is it really the compiler wrong (as Peter currently believes)? Why changing
the _BinClos declaration would lead to a not conforming implementation?

Thanks,
Paolo.




More information about the Libstdc++ mailing list