$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Marco Costalba (mcostalba_at_[hidden])
Date: 2007-11-02 09:03:53
On 11/2/07, Dean Michael Berris <mikhailberis_at_[hidden]> wrote:
> On 11/2/07, gchen <chengang31_at_[hidden]> wrote:
>
> That is because you need to know what signatures the overload instance
> will support. In C++, you have no way of modifying a type at runtime
> -- and that's why what you propose is nearly impossible if not
> impractical to implement.
I would say it's impossible in C++ ;-)
I stumbled on this during my little object factory development. The
reason it is impossible is that templates do not change the type of
already defined variables.
In your example:
overload<> f;
// after compiler processes the above statement the type of 'f' has
been exactly
//defined, 'f' is no more a template after compilation of this line!
so type of 'f'
// cannot be changed again but...
f.set(&int_sum);
// ...it should be because the above line would change the type of 'f'
as soon as
// compiler process the above statement.
So the reason the above is impossible is that:
- After compilation of a template variable definition, the variable
assumes a fixed, complete type.
- In C++ type of a variable cannot be changed once the variable has
been defined.
Hope this is clear.
Marco