This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: 26_numerics fails



Paolo,

Thanks for the detective work.

| 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;
|                               ^^^^^^

Ugh!  If that is really the case, then I think the compiler is
broken.  In another words, the compiler is saying that given :


    class X;

    struct X { int i; };

   
the following is invalid

    int main()
    {
      X x;
      x.i = 9;
    }

which is quite incorrect.  The compiler should be fixed.

-- Gaby


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]