Subject: Re: [boost] [Boost-interest] C++ library for runtime-concepts (type-erasure)
From: Daniel Larimer (dlarimer_at_[hidden])
Date: 2011-02-15 09:34:31


On 2/15/11 4:58 AM, "Germán Diago" <germandiago_at_[hidden]> wrote:

>> I'm not sure if I understand correctly what you mean but if
>> you are referring to transforming something like this...
>>
>> struct some_type
>> {
>>  T1 m1;
>>  T2 m2;
>>   ...
>>  Tn mn;
>> };
>>
>
> That was a goal of Boost.IDL interfaces, but I tried to make a summary of
> what would be useful to take into account to design things that don't overlap.
>
>
>>
>> then it will be doable with Mirror (it actually already is
>> in the old version and partially also in the new one
>> but still undocumented).

Color me very interested in how you achieved this. Though what I would
really like to see is:

struct some_type
{
    std::string append( std::string, double );
};

Converted Into functionally equivalent =>

struct new_some_type
{
    future<string> append( string, double )
    {
        future<string> fut;
        m_socket->async_sendto( serialize( s, d ),
            host, boost::bind(wait_for_response, fut );
        return fut;
    }
};

Or converted Into =>

struct some_new_type
{
    function<string(string,double)> append;
};

Using just your Mirror mirror macros + templates?

I am very impressed with Mirror, but its dependency on C++0x features that
are not available in MSVC is almost a non-starter for me. Particularly
because even though gcc supports much of C++0x, Mac OS X Development Tools
still comes bundled with gcc 4.2.1 which does not support ANY C++0x.

If you can show an example of how mirror would accomplish that, I will have
to reconsider my approach to Type Erasure, RPC, and serialization.

What is the status of Mirror's review for inclusion in official Boost?