I was trying to include quantum simply as a subproject, but I can even get it to work in a very reduced example.
First approach (what should work for a properly written header only library based on CMake):
add_executable(TestExec main.cpp)
add_subdirectory(quantum)
target_link_libraries(TestExec PUBLIC quantum)
Does not work, because:
[1/2] Building CXX object CMakeFiles/TestExec.dir/main.cpp.o
FAILED: CMakeFiles/TestExec.dir/main.cpp.o
/usr/bin/c++ -DBOOST_ALL_NO_LIB -DBOOST_CONTEXT_DYN_LINK -fPIE -fno-math-errno -ferror-limit=0 -std=c++17 -MD -MT CMakeFiles/TestExec.dir/main.cpp.o -MF CMakeFiles/TestExec.dir/main.cpp.o.d -o CMakeFiles/TestExec.dir/main.cpp.o -c ../main.cpp
../main.cpp:1:10: fatal error: 'quantum/quantum.h' file not found
#include <quantum/quantum.h>
^~~~~~~~~~~~~~~~~~~
1 error generated.
ninja: build stopped: subcommand failed.
Not surprising, because:
add_library(${PROJECT_TARGET_NAME} INTERFACE)
set(QUANTUM_DEPENDENCIES Boost::context pthread)
set_target_properties(${PROJECT_TARGET_NAME} PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES $<INSTALL_INTERFACE:include>
INTERFACE_LINK_LIBRARIES "${QUANTUM_DEPENDENCIES}"
INTERFACE_POSITION_INDEPENDENT_CODE ON
#INTERFACE_SOURCES "$<INSTALL_INTERFACE:include>/${PROJECT_TARGET_NAME}/quantum.h"
)
It seems like the quantum CMake file was never meant to be used without installing...
Okay, no problem: It's a header only library, right? Let's just include the directory.
find_package(Boost 1.72 REQUIRED COMPONENTS context)
add_executable(TestExec main.cpp)
add_subdirectory(quantum)
target_include_directories(TestExec PUBLIC quantum)
target_link_libraries(TestExec PUBLIC Boost::headers Boost::context)
Well, that doesn't work:
[1/2] Building CXX object CMakeFiles/TestExec.dir/main.cpp.o
FAILED: CMakeFiles/TestExec.dir/main.cpp.o
/usr/bin/c++ -DBOOST_ALL_NO_LIB -DBOOST_CONTEXT_DYN_LINK -I../quantum -fno-math-errno -ferror-limit=0 -std=c++17 -MD -MT CMakeFiles/TestExec.dir/main.cpp.o -MF CMakeFiles/TestExec.dir/main.cpp.o.d -o CMakeFiles/TestExec.dir/main.cpp.o -c ../main.cpp
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:20:
In file included from ../quantum/quantum/interface/quantum_icontext.h:20:
In file included from ../quantum/quantum/interface/quantum_ithread_context.h:19:
In file included from ../quantum/quantum/quantum_traits.h:19:
In file included from ../quantum/quantum/quantum_allocator.h:22:
In file included from ../quantum/quantum/quantum_stack_allocator.h:19:
In file included from ../quantum/quantum/quantum_contiguous_pool_manager.h:20:
../quantum/quantum/quantum_spinlock.h:42:5: warning: explicitly defaulted move constructor is implicitly deleted [-Wdefaulted-function-deleted]
SpinLock(SpinLock&&) = default;
^
../quantum/quantum/quantum_spinlock.h:146:39: note: move constructor of 'SpinLock' is implicitly deleted because field '_flag' has a deleted move constructor
alignas(128) std::atomic_uint32_t _flag{0};
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/atomic:778:7: note: 'atomic' has been explicitly marked deleted here
atomic(const atomic&) = delete;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:20:
In file included from ../quantum/quantum/interface/quantum_icontext.h:20:
In file included from ../quantum/quantum/interface/quantum_ithread_context.h:19:
In file included from ../quantum/quantum/quantum_traits.h:19:
In file included from ../quantum/quantum/quantum_allocator.h:22:
In file included from ../quantum/quantum/quantum_stack_allocator.h:19:
In file included from ../quantum/quantum/quantum_contiguous_pool_manager.h:20:
../quantum/quantum/quantum_spinlock.h:48:15: warning: explicitly defaulted move assignment operator is implicitly deleted [-Wdefaulted-function-deleted]
SpinLock& operator=(SpinLock&&) = default;
^
../quantum/quantum/quantum_spinlock.h:146:39: note: move assignment operator of 'SpinLock' is implicitly deleted because field '_flag' has a deleted move assignment operator
alignas(128) std::atomic_uint32_t _flag{0};
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/atomic:779:15: note: 'operator=' has been explicitly marked deleted here
atomic& operator=(const atomic&) = delete;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:48:
In file included from ../quantum/quantum/quantum_context.h:20:
../quantum/quantum/quantum_task.h:68:5: warning: explicitly defaulted move constructor is implicitly deleted [-Wdefaulted-function-deleted]
Task(Task&& task) = default;
^
../quantum/quantum/quantum_task.h:152:33: note: move constructor of 'Task' is implicitly deleted because field '_terminated' has a deleted move constructor
std::atomic_bool _terminated;
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/atomic:73:5: note: 'atomic' has been explicitly marked deleted here
atomic(const atomic&) = delete;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:48:
In file included from ../quantum/quantum/quantum_context.h:20:
../quantum/quantum/quantum_task.h:70:11: warning: explicitly defaulted move assignment operator is implicitly deleted [-Wdefaulted-function-deleted]
Task& operator=(Task&& task) = default;
^
../quantum/quantum/quantum_task.h:152:33: note: move assignment operator of 'Task' is implicitly deleted because field '_terminated' has a deleted move assignment operator
std::atomic_bool _terminated;
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/atomic:74:13: note: 'operator=' has been explicitly marked deleted here
atomic& operator=(const atomic&) = delete;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:48:
In file included from ../quantum/quantum/quantum_context.h:21:
../quantum/quantum/quantum_io_task.h:57:5: warning: explicitly defaulted move constructor is implicitly deleted [-Wdefaulted-function-deleted]
IoTask(IoTask&& task) = default;
^
../quantum/quantum/quantum_io_task.h:87:29: note: move constructor of 'IoTask' is implicitly deleted because field '_terminated' has a deleted move constructor
std::atomic_bool _terminated;
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/atomic:73:5: note: 'atomic' has been explicitly marked deleted here
atomic(const atomic&) = delete;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:48:
In file included from ../quantum/quantum/quantum_context.h:21:
../quantum/quantum/quantum_io_task.h:59:13: warning: explicitly defaulted move assignment operator is implicitly deleted [-Wdefaulted-function-deleted]
IoTask& operator=(IoTask&& task) = default;
^
../quantum/quantum/quantum_io_task.h:87:29: note: move assignment operator of 'IoTask' is implicitly deleted because field '_terminated' has a deleted move assignment operator
std::atomic_bool _terminated;
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/atomic:74:13: note: 'operator=' has been explicitly marked deleted here
atomic& operator=(const atomic&) = delete;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:20:
In file included from ../quantum/quantum/interface/quantum_icontext.h:19:
In file included from ../quantum/quantum/interface/quantum_icontext_base.h:19:
In file included from ../quantum/quantum/quantum_task_id.h:89:
In file included from ../quantum/quantum/impl/quantum_task_id_impl.h:21:
In file included from /usr/local/include/boost/functional/hash.hpp:6:
In file included from /usr/local/include/boost/container_hash/hash.hpp:761:
In file included from /usr/local/include/boost/container_hash/extensions.hpp:22:
In file included from /usr/local/include/boost/detail/container_fwd.hpp:92:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/list:63:
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_list.h:567:7: error: static_assert failed due to requirement 'is_same<std::shared_ptr<Bloomberg::quantum::ITask>, std::shared_ptr<Bloomberg::quantum::Task>>::value' "std::list must have the same value_type as its allocator"
static_assert(is_same<typename _Alloc::value_type, _Tp>::value,
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../quantum/quantum/quantum_task_queue.h:50:26: note: in instantiation of template class 'std::list<std::shared_ptr<Bloomberg::quantum::Task>, Bloomberg::quantum::ContiguousPoolManager<std::shared_ptr<Bloomberg::quantum::ITask>>>' requested here
using TaskListIter = TaskList::iterator;
^
../quantum/quantum/quantum_task_queue.h:95:18: error: unknown type name 'TaskListIter'; did you mean 'TaskList'?
TaskListIter iter,
^~~~~~~~~~~~
TaskList
../quantum/quantum/quantum_task_queue.h:49:11: note: 'TaskList' declared here
using TaskList = std::list<Task::Ptr, ContiguousPoolManager<ITask::Ptr>>;
^
../quantum/quantum/quantum_task_queue.h:100:9: error: unknown type name 'TaskListIter'; did you mean 'TaskList'?
TaskListIter _iter; // task iterator
^~~~~~~~~~~~
TaskList
../quantum/quantum/quantum_task_queue.h:49:11: note: 'TaskList' declared here
using TaskList = std::list<Task::Ptr, ContiguousPoolManager<ITask::Ptr>>;
^
../quantum/quantum/quantum_task_queue.h:132:26: error: unknown type name 'TaskListIter'; did you mean 'TaskList'?
TaskListIter iter);
^~~~~~~~~~~~
TaskList
../quantum/quantum/quantum_task_queue.h:49:11: note: 'TaskList' declared here
using TaskList = std::list<Task::Ptr, ContiguousPoolManager<ITask::Ptr>>;
^
../quantum/quantum/quantum_task_queue.h:143:5: error: unknown type name 'TaskListIter'; did you mean 'TaskList'?
TaskListIter _queueIt;
^~~~~~~~~~~~
TaskList
../quantum/quantum/quantum_task_queue.h:49:11: note: 'TaskList' declared here
using TaskList = std::list<Task::Ptr, ContiguousPoolManager<ITask::Ptr>>;
^
../quantum/quantum/quantum_task_queue.h:144:5: error: unknown type name 'TaskListIter'; did you mean 'TaskList'?
TaskListIter _blockedIt;
^~~~~~~~~~~~
TaskList
../quantum/quantum/quantum_task_queue.h:49:11: note: 'TaskList' declared here
using TaskList = std::list<Task::Ptr, ContiguousPoolManager<ITask::Ptr>>;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:48:
In file included from ../quantum/quantum/quantum_context.h:22:
In file included from ../quantum/quantum/quantum_dispatcher_core.h:20:
In file included from ../quantum/quantum/quantum_task_queue.h:166:
../quantum/quantum/impl/quantum_task_queue_impl.h:29:31: error: unknown type name 'TaskListIter'; did you mean 'TaskList'?
TaskListIter iter,
^~~~~~~~~~~~
TaskList
../quantum/quantum/quantum_task_queue.h:49:11: note: 'TaskList' declared here
using TaskList = std::list<Task::Ptr, ContiguousPoolManager<ITask::Ptr>>;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:48:
In file included from ../quantum/quantum/quantum_context.h:22:
In file included from ../quantum/quantum/quantum_dispatcher_core.h:20:
In file included from ../quantum/quantum/quantum_task_queue.h:166:
../quantum/quantum/impl/quantum_task_queue_impl.h:195:37: error: no matching constructor for initialization of 'IQueue::TaskSetterGuard'
IQueue::TaskSetterGuard taskSetter(*this, task);
^ ~~~~~~~~~~~
../quantum/quantum/interface/quantum_iqueue.h:161:26: note: candidate constructor not viable: no known conversion from 'Bloomberg::quantum::TaskQueue' to 'Bloomberg::quantum::IQueue &' for 1st argument
IQueue::TaskSetterGuard::TaskSetterGuard(IQueue& taskQueue,
^
../quantum/quantum/interface/quantum_iqueue.h:83:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 2 were provided
struct TaskSetterGuard
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:48:
In file included from ../quantum/quantum/quantum_context.h:22:
In file included from ../quantum/quantum/quantum_dispatcher_core.h:20:
In file included from ../quantum/quantum/quantum_task_queue.h:166:
../quantum/quantum/impl/quantum_task_queue_impl.h:308:52: error: unknown type name 'TaskListIter'; did you mean 'TaskList'?
ITask::Ptr TaskQueue::doDequeue(std::atomic_bool&, TaskListIter iter)
^~~~~~~~~~~~
TaskList
../quantum/quantum/quantum_task_queue.h:49:11: note: 'TaskList' declared here
using TaskList = std::list<Task::Ptr, ContiguousPoolManager<ITask::Ptr>>;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:48:
In file included from ../quantum/quantum/quantum_context.h:22:
In file included from ../quantum/quantum/quantum_dispatcher_core.h:20:
In file included from ../quantum/quantum/quantum_task_queue.h:166:
../quantum/quantum/impl/quantum_task_queue_impl.h:321:23: error: indirection requires pointer operand ('Bloomberg::quantum::TaskQueue::TaskList' (aka 'list<shared_ptr<Bloomberg::quantum::Task>, ContiguousPoolManager<shared_ptr<Bloomberg::quantum::ITask>>>') invalid)
ITask::Ptr task = *iter;
^~~~~
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:20:
In file included from ../quantum/quantum/interface/quantum_icontext.h:19:
In file included from ../quantum/quantum/interface/quantum_icontext_base.h:19:
In file included from ../quantum/quantum/quantum_task_id.h:89:
In file included from ../quantum/quantum/impl/quantum_task_id_impl.h:21:
In file included from /usr/local/include/boost/functional/hash.hpp:6:
In file included from /usr/local/include/boost/container_hash/hash.hpp:761:
In file included from /usr/local/include/boost/container_hash/extensions.hpp:22:
In file included from /usr/local/include/boost/detail/container_fwd.hpp:92:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/list:63:
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_list.h:567:7: error: static_assert failed due to requirement 'is_same<std::shared_ptr<Bloomberg::quantum::ITask>, std::shared_ptr<Bloomberg::quantum::IoTask>>::value' "std::list must have the same value_type as its allocator"
static_assert(is_same<typename _Alloc::value_type, _Tp>::value,
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../quantum/quantum/quantum_io_queue.h:44:26: note: in instantiation of template class 'std::list<std::shared_ptr<Bloomberg::quantum::IoTask>, Bloomberg::quantum::StackAllocator<std::shared_ptr<Bloomberg::quantum::ITask>, 1000>>' requested here
using TaskListIter = TaskList::iterator;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:48:
In file included from ../quantum/quantum/quantum_context.h:22:
In file included from ../quantum/quantum/quantum_dispatcher_core.h:21:
In file included from ../quantum/quantum/quantum_io_queue.h:114:
../quantum/quantum/impl/quantum_io_queue_impl.h:130:37: error: no matching constructor for initialization of 'IQueue::TaskSetterGuard'
IQueue::TaskSetterGuard taskSetter(*this, task);
^ ~~~~~~~~~~~
../quantum/quantum/interface/quantum_iqueue.h:161:26: note: candidate constructor not viable: no known conversion from 'Bloomberg::quantum::IoQueue' to 'Bloomberg::quantum::IQueue &' for 1st argument
IQueue::TaskSetterGuard::TaskSetterGuard(IQueue& taskQueue,
^
../quantum/quantum/interface/quantum_iqueue.h:83:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 2 were provided
struct TaskSetterGuard
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:63:
In file included from ../quantum/quantum/quantum_read_write_mutex.h:19:
../quantum/quantum/quantum_read_write_spinlock.h:36:5: warning: explicitly defaulted move constructor is implicitly deleted [-Wdefaulted-function-deleted]
ReadWriteSpinLock(ReadWriteSpinLock&&) = default;
^
../quantum/quantum/quantum_read_write_spinlock.h:171:39: note: move constructor of 'ReadWriteSpinLock' is implicitly deleted because field '_count' has a deleted move constructor
alignas(128) std::atomic_uint32_t _count{0};
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/atomic:778:7: note: 'atomic' has been explicitly marked deleted here
atomic(const atomic&) = delete;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:63:
In file included from ../quantum/quantum/quantum_read_write_mutex.h:19:
../quantum/quantum/quantum_read_write_spinlock.h:42:24: warning: explicitly defaulted move assignment operator is implicitly deleted [-Wdefaulted-function-deleted]
ReadWriteSpinLock& operator=(ReadWriteSpinLock&&) = default;
^
../quantum/quantum/quantum_read_write_spinlock.h:171:39: note: move assignment operator of 'ReadWriteSpinLock' is implicitly deleted because field '_count' has a deleted move assignment operator
alignas(128) std::atomic_uint32_t _count{0};
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/atomic:779:15: note: 'operator=' has been explicitly marked deleted here
atomic& operator=(const atomic&) = delete;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:63:
../quantum/quantum/quantum_read_write_mutex.h:36:5: warning: explicitly defaulted move constructor is implicitly deleted [-Wdefaulted-function-deleted]
ReadWriteMutex(ReadWriteMutex&&) = default;
^
../quantum/quantum/quantum_read_write_mutex.h:202:33: note: move constructor of 'ReadWriteMutex' is implicitly deleted because field '_spinlock' has a deleted move constructor
mutable ReadWriteSpinLock _spinlock;
^
../quantum/quantum/quantum_read_write_spinlock.h:33:5: note: 'ReadWriteSpinLock' has been explicitly marked deleted here
ReadWriteSpinLock(const ReadWriteSpinLock&) = delete;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:63:
../quantum/quantum/quantum_read_write_mutex.h:42:21: warning: explicitly defaulted move assignment operator is implicitly deleted [-Wdefaulted-function-deleted]
ReadWriteMutex& operator=(ReadWriteMutex&&) = default;
^
../quantum/quantum/quantum_read_write_mutex.h:202:33: note: move assignment operator of 'ReadWriteMutex' is implicitly deleted because field '_spinlock' has a deleted move assignment operator
mutable ReadWriteSpinLock _spinlock;
^
../quantum/quantum/quantum_read_write_spinlock.h:39:24: note: 'operator=' has been explicitly marked deleted here
ReadWriteSpinLock& operator=(const ReadWriteSpinLock&) = delete;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:48:
In file included from ../quantum/quantum/quantum_context.h:22:
In file included from ../quantum/quantum/quantum_dispatcher_core.h:20:
../quantum/quantum/quantum_task_queue.h:59:5: error: call to deleted constructor of 'Bloomberg::quantum::SpinLock'
TaskQueue(TaskQueue&& other) = default;
^~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/ext/new_allocator.h:147:23: note: in defaulted move constructor for 'Bloomberg::quantum::TaskQueue' first required here
{ ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/alloc_traits.h:484:8: note: in instantiation of function template specialization '__gnu_cxx::new_allocator<Bloomberg::quantum::TaskQueue>::construct<Bloomberg::quantum::TaskQueue, Bloomberg::quantum::TaskQueue>' requested here
{ __a.construct(__p, std::forward<_Args>(__args)...); }
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_uninitialized.h:912:17: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<Bloomberg::quantum::TaskQueue>>::construct<Bloomberg::quantum::TaskQueue, Bloomberg::quantum::TaskQueue>' requested here
__traits::construct(__alloc, __dest, std::move(*__orig));
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_uninitialized.h:950:7: note: in instantiation of function template specialization 'std::__relocate_object_a<Bloomberg::quantum::TaskQueue, Bloomberg::quantum::TaskQueue, std::allocator<Bloomberg::quantum::TaskQueue>>' requested here
std::__relocate_object_a(std::__addressof(*__cur),
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_uninitialized.h:964:14: note: in instantiation of function template specialization 'std::__relocate_a_1<Bloomberg::quantum::TaskQueue *, Bloomberg::quantum::TaskQueue *, std::allocator<Bloomberg::quantum::TaskQueue>>' requested here
return __relocate_a_1(std::__niter_base(__first),
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_vector.h:453:14: note: in instantiation of function template specialization 'std::__relocate_a<Bloomberg::quantum::TaskQueue *, Bloomberg::quantum::TaskQueue *, std::allocator<Bloomberg::quantum::TaskQueue>>' requested here
return std::__relocate_a(__first, __last, __result, __alloc);
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_vector.h:466:9: note: in instantiation of member function 'std::vector<Bloomberg::quantum::TaskQueue>::_S_do_relocate' requested here
return _S_do_relocate(__first, __last, __result, __alloc, __do_it{});
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/vector.tcc:79:8: note: in instantiation of member function 'std::vector<Bloomberg::quantum::TaskQueue>::_S_relocate' requested here
_S_relocate(this->_M_impl._M_start, this->_M_impl._M_finish,
^
../quantum/quantum/impl/quantum_dispatcher_core_impl.h:57:17: note: in instantiation of member function 'std::vector<Bloomberg::quantum::TaskQueue>::reserve' requested here
_coroQueues.reserve(coroCount);
^
../quantum/quantum/quantum_spinlock.h:39:5: note: 'SpinLock' has been explicitly marked deleted here
SpinLock(const SpinLock&) = delete;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:48:
In file included from ../quantum/quantum/quantum_context.h:22:
In file included from ../quantum/quantum/quantum_dispatcher_core.h:20:
../quantum/quantum/quantum_task_queue.h:59:5: error: call to deleted constructor of 'Bloomberg::quantum::SpinLock'
TaskQueue(TaskQueue&& other) = default;
^~~~~~~~~
../quantum/quantum/quantum_spinlock.h:39:5: note: 'SpinLock' has been explicitly marked deleted here
SpinLock(const SpinLock&) = delete;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:48:
In file included from ../quantum/quantum/quantum_context.h:22:
In file included from ../quantum/quantum/quantum_dispatcher_core.h:20:
../quantum/quantum/quantum_task_queue.h:59:5: error: call to deleted constructor of 'std::mutex'
TaskQueue(TaskQueue&& other) = default;
^~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_mutex.h:94:5: note: 'mutex' has been explicitly marked deleted here
mutex(const mutex&) = delete;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:48:
In file included from ../quantum/quantum/quantum_context.h:22:
In file included from ../quantum/quantum/quantum_dispatcher_core.h:20:
../quantum/quantum/quantum_task_queue.h:59:5: error: call to deleted constructor of 'std::condition_variable'
TaskQueue(TaskQueue&& other) = default;
^~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/condition_variable:84:5: note: 'condition_variable' has been explicitly marked deleted here
condition_variable(const condition_variable&) = delete;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:48:
In file included from ../quantum/quantum/quantum_context.h:22:
In file included from ../quantum/quantum/quantum_dispatcher_core.h:20:
../quantum/quantum/quantum_task_queue.h:59:5: error: call to deleted constructor of 'std::atomic_bool' (aka 'atomic<bool>')
TaskQueue(TaskQueue&& other) = default;
^~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/atomic:73:5: note: 'atomic' has been explicitly marked deleted here
atomic(const atomic&) = delete;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:48:
In file included from ../quantum/quantum/quantum_context.h:22:
In file included from ../quantum/quantum/quantum_dispatcher_core.h:20:
../quantum/quantum/quantum_task_queue.h:59:5: error: call to deleted constructor of 'std::atomic_bool' (aka 'atomic<bool>')
TaskQueue(TaskQueue&& other) = default;
^~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/atomic:73:5: note: 'atomic' has been explicitly marked deleted here
atomic(const atomic&) = delete;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:48:
In file included from ../quantum/quantum/quantum_context.h:22:
In file included from ../quantum/quantum/quantum_dispatcher_core.h:20:
../quantum/quantum/quantum_task_queue.h:59:5: error: call to deleted constructor of 'std::atomic_bool' (aka 'atomic<bool>')
TaskQueue(TaskQueue&& other) = default;
^~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/atomic:73:5: note: 'atomic' has been explicitly marked deleted here
atomic(const atomic&) = delete;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:48:
In file included from ../quantum/quantum/quantum_context.h:22:
In file included from ../quantum/quantum/quantum_dispatcher_core.h:20:
../quantum/quantum/quantum_task_queue.h:59:5: error: call to deleted constructor of 'std::atomic_bool' (aka 'atomic<bool>')
TaskQueue(TaskQueue&& other) = default;
^~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/atomic:73:5: note: 'atomic' has been explicitly marked deleted here
atomic(const atomic&) = delete;
^
In file included from ../main.cpp:1:
In file included from ../quantum/quantum/quantum.h:48:
In file included from ../quantum/quantum/quantum_context.h:22:
In file included from ../quantum/quantum/quantum_dispatcher_core.h:20:
../quantum/quantum/quantum_task_queue.h:59:5: error: call to deleted constructor of 'std::atomic_bool' (aka 'atomic<bool>')
TaskQueue(TaskQueue&& other) = default;
^~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/atomic:73:5: note: 'atomic' has been explicitly marked deleted here
atomic(const atomic&) = delete;
^
10 warnings and 21 errors generated.
ninja: build stopped: subcommand failed.
Okay, cool, that must be due to me including this project as a subdirectory, right? Let's try with the "official" install path:
set(CMAKE_PREFIX_PATH /data/dev/quantum_install_test/)
find_package(Quantum)
add_executable(TestExec main.cpp)
target_link_libraries(TestExec Quantum::quantum)
[1/2] Building CXX object CMakeFiles/TestExec.dir/main.cpp.o
FAILED: CMakeFiles/TestExec.dir/main.cpp.o
/usr/bin/c++ -DBOOST_ALL_NO_LIB -DBOOST_CONTEXT_DYN_LINK -isystem /data/dev/quantum_install_test/include -fPIE -fno-math-errno -ferror-limit=0 -std=c++17 -MD -MT CMakeFiles/TestExec.dir/main.cpp.o -MF CMakeFiles/TestExec.dir/main.cpp.o.d -o CMakeFiles/TestExec.dir/main.cpp.o -c ../main.cpp
In file included from ../main.cpp:1:
In file included from /data/dev/quantum_install_test/include/quantum/quantum.h:20:
In file included from /data/dev/quantum_install_test/include/quantum/interface/quantum_icontext.h:19:
In file included from /data/dev/quantum_install_test/include/quantum/interface/quantum_icontext_base.h:19:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_task_id.h:89:
In file included from /data/dev/quantum_install_test/include/quantum/impl/quantum_task_id_impl.h:21:
In file included from /usr/local/include/boost/functional/hash.hpp:6:
In file included from /usr/local/include/boost/container_hash/hash.hpp:761:
In file included from /usr/local/include/boost/container_hash/extensions.hpp:22:
In file included from /usr/local/include/boost/detail/container_fwd.hpp:92:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/list:63:
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_list.h:567:7: error: static_assert failed due to requirement 'is_same<std::shared_ptr<Bloomberg::quantum::ITask>, std::shared_ptr<Bloomberg::quantum::Task>>::value' "std::list must have the same value_type as its allocator"
static_assert(is_same<typename _Alloc::value_type, _Tp>::value,
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:50:26: note: in instantiation of template class 'std::list<std::shared_ptr<Bloomberg::quantum::Task>, Bloomberg::quantum::ContiguousPoolManager<std::shared_ptr<Bloomberg::quantum::ITask>>>' requested here
using TaskListIter = TaskList::iterator;
^
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:95:18: error: unknown type name 'TaskListIter'; did you mean 'TaskList'?
TaskListIter iter,
^
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:49:11: note: 'TaskList' declared here
using TaskList = std::list<Task::Ptr, ContiguousPoolManager<ITask::Ptr>>;
^
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:100:9: error: unknown type name 'TaskListIter'; did you mean 'TaskList'?
TaskListIter _iter; // task iterator
^
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:49:11: note: 'TaskList' declared here
using TaskList = std::list<Task::Ptr, ContiguousPoolManager<ITask::Ptr>>;
^
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:132:26: error: unknown type name 'TaskListIter'; did you mean 'TaskList'?
TaskListIter iter);
^
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:49:11: note: 'TaskList' declared here
using TaskList = std::list<Task::Ptr, ContiguousPoolManager<ITask::Ptr>>;
^
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:143:5: error: unknown type name 'TaskListIter'; did you mean 'TaskList'?
TaskListIter _queueIt;
^
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:49:11: note: 'TaskList' declared here
using TaskList = std::list<Task::Ptr, ContiguousPoolManager<ITask::Ptr>>;
^
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:144:5: error: unknown type name 'TaskListIter'; did you mean 'TaskList'?
TaskListIter _blockedIt;
^
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:49:11: note: 'TaskList' declared here
using TaskList = std::list<Task::Ptr, ContiguousPoolManager<ITask::Ptr>>;
^
In file included from ../main.cpp:1:
In file included from /data/dev/quantum_install_test/include/quantum/quantum.h:48:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_context.h:22:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_dispatcher_core.h:20:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:166:
/data/dev/quantum_install_test/include/quantum/impl/quantum_task_queue_impl.h:29:31: error: unknown type name 'TaskListIter'; did you mean 'TaskList'?
TaskListIter iter,
^
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:49:11: note: 'TaskList' declared here
using TaskList = std::list<Task::Ptr, ContiguousPoolManager<ITask::Ptr>>;
^
In file included from ../main.cpp:1:
In file included from /data/dev/quantum_install_test/include/quantum/quantum.h:48:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_context.h:22:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_dispatcher_core.h:20:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:166:
/data/dev/quantum_install_test/include/quantum/impl/quantum_task_queue_impl.h:195:37: error: no matching constructor for initialization of 'IQueue::TaskSetterGuard'
IQueue::TaskSetterGuard taskSetter(*this, task);
^ ~~~~~~~~~~~
/data/dev/quantum_install_test/include/quantum/interface/quantum_iqueue.h:161:26: note: candidate constructor not viable: no known conversion from 'Bloomberg::quantum::TaskQueue' to 'Bloomberg::quantum::IQueue &' for 1st argument
IQueue::TaskSetterGuard::TaskSetterGuard(IQueue& taskQueue,
^
/data/dev/quantum_install_test/include/quantum/interface/quantum_iqueue.h:83:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 2 were provided
struct TaskSetterGuard
^
In file included from ../main.cpp:1:
In file included from /data/dev/quantum_install_test/include/quantum/quantum.h:48:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_context.h:22:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_dispatcher_core.h:20:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:166:
/data/dev/quantum_install_test/include/quantum/impl/quantum_task_queue_impl.h:308:52: error: unknown type name 'TaskListIter'; did you mean 'TaskList'?
ITask::Ptr TaskQueue::doDequeue(std::atomic_bool&, TaskListIter iter)
^
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:49:11: note: 'TaskList' declared here
using TaskList = std::list<Task::Ptr, ContiguousPoolManager<ITask::Ptr>>;
^
In file included from ../main.cpp:1:
In file included from /data/dev/quantum_install_test/include/quantum/quantum.h:48:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_context.h:22:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_dispatcher_core.h:20:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:166:
/data/dev/quantum_install_test/include/quantum/impl/quantum_task_queue_impl.h:321:23: error: indirection requires pointer operand ('Bloomberg::quantum::TaskQueue::TaskList' (aka 'list<shared_ptr<Bloomberg::quantum::Task>, ContiguousPoolManager<shared_ptr<Bloomberg::quantum::ITask>>>') invalid)
ITask::Ptr task = *iter;
^~~~~
In file included from ../main.cpp:1:
In file included from /data/dev/quantum_install_test/include/quantum/quantum.h:20:
In file included from /data/dev/quantum_install_test/include/quantum/interface/quantum_icontext.h:19:
In file included from /data/dev/quantum_install_test/include/quantum/interface/quantum_icontext_base.h:19:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_task_id.h:89:
In file included from /data/dev/quantum_install_test/include/quantum/impl/quantum_task_id_impl.h:21:
In file included from /usr/local/include/boost/functional/hash.hpp:6:
In file included from /usr/local/include/boost/container_hash/hash.hpp:761:
In file included from /usr/local/include/boost/container_hash/extensions.hpp:22:
In file included from /usr/local/include/boost/detail/container_fwd.hpp:92:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/list:63:
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_list.h:567:7: error: static_assert failed due to requirement 'is_same<std::shared_ptr<Bloomberg::quantum::ITask>, std::shared_ptr<Bloomberg::quantum::IoTask>>::value' "std::list must have the same value_type as its allocator"
static_assert(is_same<typename _Alloc::value_type, _Tp>::value,
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/data/dev/quantum_install_test/include/quantum/quantum_io_queue.h:44:26: note: in instantiation of template class 'std::list<std::shared_ptr<Bloomberg::quantum::IoTask>, Bloomberg::quantum::StackAllocator<std::shared_ptr<Bloomberg::quantum::ITask>, 1000>>' requested here
using TaskListIter = TaskList::iterator;
^
In file included from ../main.cpp:1:
In file included from /data/dev/quantum_install_test/include/quantum/quantum.h:48:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_context.h:22:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_dispatcher_core.h:21:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_io_queue.h:114:
/data/dev/quantum_install_test/include/quantum/impl/quantum_io_queue_impl.h:130:37: error: no matching constructor for initialization of 'IQueue::TaskSetterGuard'
IQueue::TaskSetterGuard taskSetter(*this, task);
^ ~~~~~~~~~~~
/data/dev/quantum_install_test/include/quantum/interface/quantum_iqueue.h:161:26: note: candidate constructor not viable: no known conversion from 'Bloomberg::quantum::IoQueue' to 'Bloomberg::quantum::IQueue &' for 1st argument
IQueue::TaskSetterGuard::TaskSetterGuard(IQueue& taskQueue,
^
/data/dev/quantum_install_test/include/quantum/interface/quantum_iqueue.h:83:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 2 were provided
struct TaskSetterGuard
^
In file included from ../main.cpp:1:
In file included from /data/dev/quantum_install_test/include/quantum/quantum.h:48:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_context.h:22:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_dispatcher_core.h:20:
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:59:5: error: call to deleted constructor of 'Bloomberg::quantum::SpinLock'
TaskQueue(TaskQueue&& other) = default;
^~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/ext/new_allocator.h:147:23: note: in defaulted move constructor for 'Bloomberg::quantum::TaskQueue' first required here
{ ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/alloc_traits.h:484:8: note: in instantiation of function template specialization '__gnu_cxx::new_allocator<Bloomberg::quantum::TaskQueue>::construct<Bloomberg::quantum::TaskQueue, Bloomberg::quantum::TaskQueue>' requested here
{ __a.construct(__p, std::forward<_Args>(__args)...); }
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_uninitialized.h:912:17: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<Bloomberg::quantum::TaskQueue>>::construct<Bloomberg::quantum::TaskQueue, Bloomberg::quantum::TaskQueue>' requested here
__traits::construct(__alloc, __dest, std::move(*__orig));
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_uninitialized.h:950:7: note: in instantiation of function template specialization 'std::__relocate_object_a<Bloomberg::quantum::TaskQueue, Bloomberg::quantum::TaskQueue, std::allocator<Bloomberg::quantum::TaskQueue>>' requested here
std::__relocate_object_a(std::__addressof(*__cur),
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_uninitialized.h:964:14: note: in instantiation of function template specialization 'std::__relocate_a_1<Bloomberg::quantum::TaskQueue *, Bloomberg::quantum::TaskQueue *, std::allocator<Bloomberg::quantum::TaskQueue>>' requested here
return __relocate_a_1(std::__niter_base(__first),
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_vector.h:453:14: note: in instantiation of function template specialization 'std::__relocate_a<Bloomberg::quantum::TaskQueue *, Bloomberg::quantum::TaskQueue *, std::allocator<Bloomberg::quantum::TaskQueue>>' requested here
return std::__relocate_a(__first, __last, __result, __alloc);
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_vector.h:466:9: note: in instantiation of member function 'std::vector<Bloomberg::quantum::TaskQueue>::_S_do_relocate' requested here
return _S_do_relocate(__first, __last, __result, __alloc, __do_it{});
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/vector.tcc:79:8: note: in instantiation of member function 'std::vector<Bloomberg::quantum::TaskQueue>::_S_relocate' requested here
_S_relocate(this->_M_impl._M_start, this->_M_impl._M_finish,
^
/data/dev/quantum_install_test/include/quantum/impl/quantum_dispatcher_core_impl.h:57:17: note: in instantiation of member function 'std::vector<Bloomberg::quantum::TaskQueue>::reserve' requested here
_coroQueues.reserve(coroCount);
^
/data/dev/quantum_install_test/include/quantum/quantum_spinlock.h:39:5: note: 'SpinLock' has been explicitly marked deleted here
SpinLock(const SpinLock&) = delete;
^
In file included from ../main.cpp:1:
In file included from /data/dev/quantum_install_test/include/quantum/quantum.h:48:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_context.h:22:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_dispatcher_core.h:20:
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:59:5: error: call to deleted constructor of 'Bloomberg::quantum::SpinLock'
TaskQueue(TaskQueue&& other) = default;
^~~~~~~~~
/data/dev/quantum_install_test/include/quantum/quantum_spinlock.h:39:5: note: 'SpinLock' has been explicitly marked deleted here
SpinLock(const SpinLock&) = delete;
^
In file included from ../main.cpp:1:
In file included from /data/dev/quantum_install_test/include/quantum/quantum.h:48:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_context.h:22:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_dispatcher_core.h:20:
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:59:5: error: call to deleted constructor of 'std::mutex'
TaskQueue(TaskQueue&& other) = default;
^~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_mutex.h:94:5: note: 'mutex' has been explicitly marked deleted here
mutex(const mutex&) = delete;
^
In file included from ../main.cpp:1:
In file included from /data/dev/quantum_install_test/include/quantum/quantum.h:48:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_context.h:22:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_dispatcher_core.h:20:
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:59:5: error: call to deleted constructor of 'std::condition_variable'
TaskQueue(TaskQueue&& other) = default;
^~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/condition_variable:84:5: note: 'condition_variable' has been explicitly marked deleted here
condition_variable(const condition_variable&) = delete;
^
In file included from ../main.cpp:1:
In file included from /data/dev/quantum_install_test/include/quantum/quantum.h:48:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_context.h:22:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_dispatcher_core.h:20:
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:59:5: error: call to deleted constructor of 'std::atomic_bool' (aka 'atomic<bool>')
TaskQueue(TaskQueue&& other) = default;
^~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/atomic:73:5: note: 'atomic' has been explicitly marked deleted here
atomic(const atomic&) = delete;
^
In file included from ../main.cpp:1:
In file included from /data/dev/quantum_install_test/include/quantum/quantum.h:48:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_context.h:22:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_dispatcher_core.h:20:
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:59:5: error: call to deleted constructor of 'std::atomic_bool' (aka 'atomic<bool>')
TaskQueue(TaskQueue&& other) = default;
^~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/atomic:73:5: note: 'atomic' has been explicitly marked deleted here
atomic(const atomic&) = delete;
^
In file included from ../main.cpp:1:
In file included from /data/dev/quantum_install_test/include/quantum/quantum.h:48:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_context.h:22:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_dispatcher_core.h:20:
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:59:5: error: call to deleted constructor of 'std::atomic_bool' (aka 'atomic<bool>')
TaskQueue(TaskQueue&& other) = default;
^~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/atomic:73:5: note: 'atomic' has been explicitly marked deleted here
atomic(const atomic&) = delete;
^
In file included from ../main.cpp:1:
In file included from /data/dev/quantum_install_test/include/quantum/quantum.h:48:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_context.h:22:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_dispatcher_core.h:20:
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:59:5: error: call to deleted constructor of 'std::atomic_bool' (aka 'atomic<bool>')
TaskQueue(TaskQueue&& other) = default;
^~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/atomic:73:5: note: 'atomic' has been explicitly marked deleted here
atomic(const atomic&) = delete;
^
In file included from ../main.cpp:1:
In file included from /data/dev/quantum_install_test/include/quantum/quantum.h:48:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_context.h:22:
In file included from /data/dev/quantum_install_test/include/quantum/quantum_dispatcher_core.h:20:
/data/dev/quantum_install_test/include/quantum/quantum_task_queue.h:59:5: error: call to deleted constructor of 'std::atomic_bool' (aka 'atomic<bool>')
TaskQueue(TaskQueue&& other) = default;
^~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/atomic:73:5: note: 'atomic' has been explicitly marked deleted here
atomic(const atomic&) = delete;
^
21 errors generated.
ninja: build stopped: subcommand failed.
Nope, that wasn't it.
main.cpp simply includes the quantum header for a start:
#include <quantum/quantum.h>
int main() {
return 0;
}
Tested on Ubuntu 20.04 with Clang 12.0.1
What am I missing?