Потоки строительных блоков с использованием std :: shared_ptr

Я только начал работать с TBB. Должен сказать, это выглядит очень красиво, однако я столкнулся со следующей проблемой. Использование лямбды с std :: shared_ptr, похоже, не работает.

source_node<int>(g,[&](int& val) -> bool {val = 0; return true;},false);
source_node<std::shared_ptr<int>(g,[&](std::shared_ptr<int> val) -> bool {val = std::make_shared<int>(0);return true;},false);

со следующей ошибкой компиляции:

error: C2665: 'std::shared_ptr<int>::shared_ptr' : none of the 5 overloads could convert all the argument types
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\memory(504): could be 'std::shared_ptr<int>::shared_ptr<main::<lambda_484cee4d4b0231890bebaeba94e0ddad>,bool>(std::nullptr_t,_Dx,_Alloc)'
with
[
_Dx=main::<lambda_484cee4d4b0231890bebaeba94e0ddad>
]

в основном int был заменен на std :: shared_ptr.

Любые идеи будут оценены!

С уважением Auke

0

Решение

Спасибо Майк Сеймур

source_node<std::shared_ptr<int>>(g,[&](std::shared_ptr<int> val) -> bool {val = std::make_shared<int>(0);return true;},false);
0

Другие решения


По вопросам рекламы [email protected]