S>>Вот это, получается, канонический вариант. Но не красивый — добавляет в код угловатости.
M>Конкретно что не устраивает? M>В с++ за владение объектом и его передачу как раз таки отвечает специально для этого придуманный unique_ptr.
Ну вроде и без unique_ptr все работает за счет RVO. Наш авторитет сказал выше что гарантируется стандартом, можно опираться на это. Т.е. если можно написать проще — то нужно писать проще, без доп. оберток.