Этот простой пример не удается скомпилировать в VS2K8:Как вы правильно используете boost :: make_shared_ptr?
io_service io2;
shared_ptr<asio::deadline_timer> dt(make_shared<asio::deadline_timer>(io2, posix_time::seconds(20)));
Как это делает один:
shared_ptr<asio::deadline_timer> dt = make_shared<asio::deadline_timer>(io2);
Ошибка:
ошибка C2664: «повышение :: ASIO :: basic_deadline_timer :: basic_deadline_timer (boost :: asio :: io_service &, const boost :: posix_time :: ptime &) ': невозможно преобразовать параметр 1 из' const boost :: asio :: io_ Сервис»на„повышение :: ASIO :: io_service &“
Отлично, спасибо! Не знал о boost :: ref. Было ли это частично создано для того, чтобы обойти этот тип вещей или использовать его в других целях? – ApplePieIsGood
@ Аппл: По этой причине он был разработан в значительной степени. Например, 'boost :: thread' будет делать копию своих аргументов для нового потока, но если вы хотите действительно передать ссылку' boost :: ref', там тоже работает. Он используется всякий раз, когда вы хотите передать ссылку, но функция предназначена для создания копии. – GManNickG