Function template make_default
boost::make_default
Synopsis
template<typename T> T make_default();
Description
Значительное число библиотек требует экземпляра предоставленного класса (создания и инициализации). Например,
Type result;
...
istream >> result;
В генерическом коде это приводит к требованию совместимости по умолчанию, наложенному на каждый тип 'Type' для использования с соответствующим кодом. Неизбежно это требование a) либо исключает все классы, которые по различным причинам не соответствуют этому требованию, либо b) налагает определенные (не обязательно желательные) конструкции/осуществления на соответствующие классы.
Развертывание импульса::make_default() устраняет требование совместимости по умолчанию с
Type result = boost::make_default<Type>();
...
istream >> result;
Классы без конструктора по умолчанию теперь могут быть включены через специализацию::make_default():
namespace boost
{
template<> inline Type make_default<Type>() { return Type(parameters); }
}