| 12345678910111213141516171819202122232425262728293031323334353637383940 | /// @file// Copyright (c) 2009-2016 Vladimir Batov.// Use, modification and distribution are subject to the Boost Software License,// Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.#ifndef BOOST_MAKE_DEFAULT_HPP#define BOOST_MAKE_DEFAULT_HPPnamespace boost{    /// @details A considerable number of libraries require an instance of a class    /// provided (storage created and initialized). For example,    /// @code    ///    Type result;    ///    ...    ///    istream >> result;    /// @endcode    /// In generic code that results in the Default Constructibility requirement imposed    /// on every type 'Type' to be used with the respective code. Inevitably, that requirement    /// a) either excludes all the classes that for various reasons do not meet that requirement or    /// b) imposes certain (not necessarily desirable) design/implementation onto respective classes.    ///    /// Deployment of boost::make_default() eliminates the Default Constructibility requirement with    /// @code    ///    Type result = boost::make_default<Type>();    ///    ...    ///    istream >> result;    /// @endcode    /// Classes with no default constructor can now be included via a boost::make_default() specialization:    /// @code    /// namespace boost    /// {    ///     template<> inline Type make_default<Type>() { return Type(parameters); }    /// }    /// @endcode    template<typename T> T make_default() { return T(); }}#endif // BOOST_MAKE_DEFAULT_HPP
 |