Re[12]: Реализация IN, IN-OUT и OUT параметров функций
От: Galiulin Rishat Faimovich Узбекистан  
Дата: 19.09.11 13:10
Оценка:
Здравствуйте, k.o., Вы писали:

KO>Здравствуйте, Galiulin Rishat Faimovich, Вы писали:


GRF>>Попробуйте, пожалуйста, это:

GRF>>
GRF>>void sink1( in< std::unique_ptr< const A > > arg)
GRF>>{
GRF>>  sink( in_( std::move( arg()() ) ) );
GRF>>}
GRF>>


KO>А самому? Вас же на ideone.com не забанили, надеюсь? В любом случае, результатом arg() будет константная ссылка на unique_ptr<const A>, у которого, разумеется, нет оператора ().


KO>Попробуйте повторить этот пример используя ваш specification.hpp.


Тогда я не понял ваш переидущий ответ
KO>>>Кроме того, у этого подхода есть ещё, скажем так, концептуальная проблема, из-за того что некоторые способы передачи параметров не укладываются в in, in_out и out. Например, мы хотим передавать владение unique_ptr дальше по цепочке вызовов:

KO>>>
KO>>>void sink( std::unique_ptr< const A > arg)
KO>>>{
KO>>>}
 
KO>>>void sink1( std::unique_ptr< const A > arg)
KO>>>{
KO>>>  sink(std::move(arg));
KO>>>}
KO>>>


GRF>>А где здесь проблема? Можете подробнее? У меня вроде вот этот код работает

GRF>>
GRF>>void sink( in< std::unique_ptr< const A > > arg)
GRF>>{
GRF>>}

GRF>>void sink1( in< std::unique_ptr< const A > > arg)
GRF>>{
GRF>>  sink( std::move( arg ) );
GRF>>}
GRF>>


KO>Нужно чтобы работал вот такой код:


KO>
KO>void sink1( in< std::unique_ptr< const A > > arg)
KO>{
KO>  sink( in_( std::move( arg() ) ) );
KO>}
KO>


KO>Понятно, что саму обёртку можно, без проблем, передать дальше.


Зачем тогда здесь скобки у arg ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.