Opened 16 years ago

Closed 15 years ago

#818 closed Bugs (fixed)

No zero-argument in_place()

Reported by: nobody Owned by: Fernando Cacciola
Milestone: Boost 1.35.0 Component: None
Version: None Severity: Problem
Keywords: Cc:

Description

There is no zero-argument version of boost::in_place(). I would have expected this to exist, and to be a factory for a type's default constructor.

This is necessary when attempting to use boost::optional with a type that is not CopyConstructible, or where the copy constructor is expensive:

    #include <boost/optional.hpp>
    #include <boost/utility/in_place_factory.hpp>

    boost::optional<my_type> my_optional;
    my_optional = boost::in_place();

I'm not aware of any other way to initialise a boost::optional to a default-constructed instance without unnecessary and perhaps impossible copying.

--Clive.
  (clive-nospam-boost.org@nsict.org)

Change History (2)

comment:1 by anonymous, 15 years ago

There is an implementacion of place with zero-argument in http://www.boost-consulting.com/vault/index.php?direction=0&order=&directory=Utilities

The poly_obj.tar.gz contains the file poly_obj.hpp and it´s there an in_place with zero-argument. It runned OK in my system. Anyone could check it out and put in release? Thanks..

comment:2 by Fernando Cacciola, 15 years ago

Milestone: Boost 1.35.0
Resolution: Nonefixed
Severity: Problem
Status: assignedclosed

The improved version contributed by Tobias Schwinger (which allows zero-argument factories) is now on the trunk. The docs still need to be updated though.

Note: See TracTickets for help on using tickets.