Здравствуйте, k.o., Вы писали:
KO>Здравствуйте, Galiulin Rishat Faimovich, Вы писали:
KO>>>>>Попробуйте повторить этот пример используя ваш specification.hpp.
GRF>>Вроде теперь ваш пример работает
KO>Зато, теперь не работает добавление константности:
KO>KO>void
KO>sink2( in< const std::unique_ptr< const A > > arg )
KO>{
KO> // would like to get compile error for attempts to modify arg, e.g.:
KO> // arg().release();
KO>}
KO>void
KO>sink1( in< std::unique_ptr< const A > > arg )
KO>{
KO> std::cout << "sink1 owns pointer to A: " << arg( ).get( ) << std::endl;
KO> sink2( in_( std::move( arg() ) ) );
KO> std::cout << "sink1 passed ownership to sink2: " << arg( ).get( ) << std::endl;
KO>}
KO>
А для каких целей нужно будет добавление константности если полностью перейти на in, in_out, out нотацию?
Как я понимаю in параметр должен гарантировать толко неизменность передаваемого внешнего для функции параметра.