Boost logo

Boost :

From: Philippe A. Bouchard (philippeb_at_[hidden])
Date: 2003-02-24 19:24:54

David Abrahams wrote:


>> Everything seems already defined ;)
> ???

Every time I'm thinking about something, I find that it was already defined
somewhere else.

>> Given the fact optional<>::m_storage is aligned like a bool...:
>> - Maybe aligned_storage<> should always destruct its object. It
>> would be the user's responsability to construct the object before
>> its destruction, otherwise the result would be undefined.
> And if the object's constructor throws an exception, what then?

I am not familiar with exceptions that much, but calling implicitly the
object's destructor will not affect its construction if the user does not
forget to call its constructor. Doesn't it?


>> struct A
>> {
>> typedef optional_typelist< typelist<char, short, double> >
>> optional_members;
>> typedef array<bool, optional_members::size> optional_inits;
>> optional_inits init; // Array of booleans
>> optional_members storage; // Typelist storage
>> };
>> In this example, optional_typelist<T1, T2, T3, ...> would be a list
>> of optional<T1>, optional<T2>, optional<T3>, ...
>> It could be simplified even more, but this is just a suggestion.
> You're really a fiend for low-level optimizations, aren't you?

Yes, I'm trying to promote those optimizations whenever possible... Maybe
my example was too much ugly. Here is another one:

struct A : optionals<char, short, double>
    void foo()
        new (optional<2>) double(3.1416);

Given that optionals<> is similar to a tuple<> and it will generate two
distinct lists: one list of booleans and another list of storage types.

Philippe A. Bouchard

Boost list run by bdawes at, gregod at, cpdaniel at, john at