В моем API у меня есть функция, которая возвращает std::istringstream
.
std::istringstream
class не скопирован, но поддерживает перемещение так на соответствующем компиляторе, нет проблем с возвратом локального std::istringstream
.Обходной способ для возврата непокрытого объекта без перемещения ctor
Тем не менее, на gcc 4.9 есть no support для перемещения std::istringstream
. Есть ли способ обхода, который я могу использовать, что std::istringstream
без изменения API с точки зрения пользователя?
Обходное решение, предложенное here, с использованием unique_ptr<std::istringstream>
изменит семантику API.
Я не понимаю, как вы можете иметь обходной путь, если вы не можете изменить тип возвращаемого значения. – NathanOliver
Ну, скажем, я беру результат с помощью 'auto' (или просто использую его как временный), чтобы вы могли вернуть что-то еще. Теперь я думаю, что можно создать оболочку с тем же интерфейсом и вернуть ее. –
Обертка затронет ту же проблему. Вы не можете переместить поток в оболочку, и вы не можете его скопировать, так как вы получаете оболочку из этой функции? – NathanOliver