Конструктор по умолчанию с std::reference_wrapper в качестве члена?
У меня есть эта структура:
struct MyStruct
{
MyStruct(const Wrapper &wrapper, /*...*/) :
wrapper(std::cref(wrapper)), /*...*/ {}
std::reference_wrapper<Wrapper const> wrapper;
/*...*/
};
Тем не менее, теперь я хочу использовать tbb::concurrent_bounded_queue<MyStruct>
, что невозможно, так как MyStruct
не имеет конструктора по умолчанию. Но я не знаю, как это определить, так как wrapper
должен быть как-то инициализирован. Есть ли решение для этого (кроме использования сырых указателей)?
tbb
ошибка (где FindAffineShapeArgs
является MyStruct
Вот):
/usr/include/tbb/concurrent_queue.h(453): error: no default constructor exists for class "FindAffineShapeArgs"
T value;
^
detected during:
instantiation of "void tbb::concurrent_bounded_queue<T, A>::clear() [with T=FindAffineShapeArgs, A=tbb::cache_aligned_allocator<FindAffineShapeArgs>]" at line 446
instantiation of "tbb::concurrent_bounded_queue<T, A>::~concurrent_bounded_queue() [with T=FindAffineShapeArgs, A=tbb::cache_aligned_allocator<FindAffineShapeArgs>]" at line 272 of "/home/luca/Dropbox/HKUST/CloudCache/cloudcache/CloudCache/Descriptors/hesaff/pyramid.cpp"