
Boost : 
From: Corrado Zoccolo (czoccolo_at_[hidden])
Date: 20080202 07:51:55
Hi Joaquin
On Feb 2, 2008 12:57 PM, "JOAQUIN LOPEZ MU?Z" <joaquin_at_[hidden]> wrote:
>
> 2. Indeed GoF introduces a key type K into the pattern that
> is used to retrieve the actual values of T. So, we have
> a onetoone relation K>T, i.e. there exists a stateless
> function f of the form
>
> T f(const K&);
>
> that can be used to construct a T from a given K. And,
> additionally, K is cheaper to construct than T. This is
> the map approach, right? My question now is: is this a realistic
> scenario? If K is actually cheaper to construct than T and
> we can univocally get the associated T from any K, why work
> with Ts and not just use Ks in the first place? The only
> plaussible justifications I can think of is that f() is
> computationally expensive or that T is more convenient to
> work with than K, but these seem (to me) not so likely
> concerns more on the second concern on point 3 below, though.
> Note that I explicitly observed that f must be *stateless*, i.e.
> a K object contains exactly the same information as its associated
> T value. This is not the case in most usages of std::map, which
> is a reason why std::maps are useful :)
> I am not plainly denying the existence of sensible K>T
> scenarios, but I thought long and hard and couldn't find
> any. If you can come up with one I'll be happy to know.
> So, my analysis led me to conclude that the right approach
> is to assume that K==T, that is, the set approach, or at
> most than K and T are just different representations of the
> same information.
>
One example for all:
K = const char *
T = std::string
I have seen many of those examples in which an object is actually built from
something simpler (in all the cases f will be a oneargument, nonexplicit
constructor T(K) ).
What about defining a trait, construction_arg<T>::type that can give K in
such cases, and T if not specified?
It could be generally useful also in other cases, expecially in the
transition phase, in which we still lack rvalue references.
Corrado
 __________________________________________________________________________ dott. Corrado Zoccolo mailto:zoccolo_at_[hidden] PhD  Department of Computer Science  University of Pisa, Italy  The selfconfidence of a warrior is not the selfconfidence of the average man. The average man seeks certainty in the eyes of the onlooker and calls that selfconfidence. The warrior seeks impeccability in his own eyes and calls that humbleness. Tales of Power  C. Castaneda
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk