Boost logo

Boost :

From: Gabriel Dos Reis (gdr_at_[hidden])
Date: 2004-03-07 23:07:54


Jaakko Jarvi <jajarvi_at_[hidden]> writes:

| > Isn't it useful to have a way to specify whether the argument is to be
| > passed by value, reference, const reference, etc. ?
|
| This has been brought up in the standards committee
| (use of auto as a parameter type defines a template implicitly),
| not for lambdas but for normal named functions.

You're right that is not part of any formal proposal but if you ask
the other co-author of decltype/auto proposal, he would tell you that
he had been playing with that idea for sometime now :-)
(Since at least the first version of that proposal :-))

As I commented last week, I would like to see the proposal to go a
step further and allows type inference that can refer to local
classes, e.g:

   operator*: (const auto& x, const auto& y) -> auto
   {
      using lhs_type = decltype(x);
      using rhs_type = decltype(y);

      struct dot {
         lhs_type lhs;
         rhs_type rhs;
         dot(lhs_type l, rhs_type r) : lhs(l), rhs(r) { }

         // evaluation on demand
         operator(): (auto x) const -> auto
         { return lhs(x) * rhs(x); }
      };

      return dot(x, y);
   }

(It would be even better if we could get "concepts", but that is a
different story).

E.g. I would like to see less needs for clumsy/brittle constructs
needed to support expression templates that some domain specific
libraries seem to require.

-- Gaby


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