I followed the instruction to generate the Makefile and succeeded.
While the make process, some error occurred while compiling the "threadpool.cpp", I think it's a syntax error.
I know almost nothing about c++, but I'm very interested in glass3, so please help.
The detailed error information are as follows:
[ 17%] Performing build step for 'util'
Scanning dependencies of target util
[ 3%] Building CXX object CMakeFiles/util.dir/src/baseclass.cpp.o
[ 6%] Building CXX object CMakeFiles/util.dir/src/cache.cpp.o
[ 9%] Building CXX object CMakeFiles/util.dir/src/config.cpp.o
[ 12%] Building CXX object CMakeFiles/util.dir/src/date.cpp.o
[ 16%] Building CXX object CMakeFiles/util.dir/src/fileutil.cpp.o
[ 19%] Building CXX object CMakeFiles/util.dir/src/geo.cpp.o
[ 22%] Building CXX object CMakeFiles/util.dir/src/glassid.cpp.o
[ 25%] Building CXX object CMakeFiles/util.dir/src/glassmath.cpp.o
[ 29%] Building CXX object CMakeFiles/util.dir/src/logger.cpp.o
[ 32%] Building CXX object CMakeFiles/util.dir/src/queue.cpp.o
[ 35%] Building CXX object CMakeFiles/util.dir/src/stringutil.cpp.o
[ 38%] Building CXX object CMakeFiles/util.dir/src/taper.cpp.o
[ 41%] Building CXX object CMakeFiles/util.dir/src/threadbaseclass.cpp.o
[ 45%] Building CXX object CMakeFiles/util.dir/src/threadpool.cpp.o
In file included from /home/chris/github/neic-glass3-master/util/src/threadpool.cpp:1:
/home/chris/github/neic-glass3-master/util/include/threadpool.h:77:19: error: ‘std::function’ has not been declared
77 | void addJob(std::function<void()> newJob);
| ^~~~~~~~
/home/chris/github/neic-glass3-master/util/include/threadpool.h:77:27: error: expected ‘,’ or ‘...’ before ‘<’ token
77 | void addJob(std::function<void()> newJob);
| ^
/home/chris/github/neic-glass3-master/util/include/threadpool.h:106:18: error: ‘function’ is not a member of ‘std’
106 | std::queue<std::function<void()>> m_JobQueue;
| ^~~~~~~~
/home/chris/github/neic-glass3-master/util/include/threadpool.h:17:1: note: ‘std::function’ is defined in header ‘’; did you forget to ‘#include ’?
16 | #include
+++ |+#include
17 | #include
/home/chris/github/neic-glass3-master/util/include/threadpool.h:106:18: error: ‘function’ is not a member of ‘std’
106 | std::queue<std::function<void()>> m_JobQueue;
| ^~~~~~~~
/home/chris/github/neic-glass3-master/util/include/threadpool.h:106:18: note: ‘std::function’ is defined in header ‘’; did you forget to ‘#include ’?
/home/chris/github/neic-glass3-master/util/include/threadpool.h:106:32: error: template argument 1 is invalid
106 | std::queue<std::function<void()>> m_JobQueue;
| ^
/home/chris/github/neic-glass3-master/util/include/threadpool.h:106:32: error: template argument 2 is invalid
/home/chris/github/neic-glass3-master/util/include/threadpool.h:106:33: error: expected unqualified-id before ‘>’ token
106 | std::queue<std::function<void()>> m_JobQueue;
| ^~
/home/chris/github/neic-glass3-master/util/src/threadpool.cpp:25:6: error: no declaration matches ‘void glass3::util::ThreadPool::addJob(std::function<void()>)’
25 | void ThreadPool::addJob(std::function<void()> newjob) {
| ^~~~~~~~~~
In file included from /home/chris/github/neic-glass3-master/util/src/threadpool.cpp:1:
/home/chris/github/neic-glass3-master/util/include/threadpool.h:77:7: note: candidate is: ‘void glass3::util::ThreadPool::addJob(int)’
77 | void addJob(std::function<void()> newJob);
| ^~~~~~
/home/chris/github/neic-glass3-master/util/include/threadpool.h:31:7: note: ‘class glass3::util::ThreadPool’ defined here
31 | class ThreadPool : public util::ThreadBaseClass {
| ^~~~~~~~~~
/home/chris/github/neic-glass3-master/util/src/threadpool.cpp: In member function ‘virtual glass3::util::WorkState glass3::util::ThreadPool::work()’:
/home/chris/github/neic-glass3-master/util/src/threadpool.cpp:41:6: error: ‘m_JobQueue’ was not declared in this scope
41 | if (m_JobQueue.empty() == true) {
| ^~~~~~~~~~
/home/chris/github/neic-glass3-master/util/src/threadpool.cpp:50:33: error: ‘m_JobQueue’ was not declared in this scope
50 | std::function<void()> newjob = m_JobQueue.front();
| ^~~~~~~~~~
/home/chris/github/neic-glass3-master/util/src/threadpool.cpp: In member function ‘int glass3::util::ThreadPool::getJobQueueSize()’:
/home/chris/github/neic-glass3-master/util/src/threadpool.cpp:82:35: error: ‘m_JobQueue’ was not declared in this scope
82 | int queuesize = static_cast(m_JobQueue.size());
| ^~~~~~~~~~
make[5]: *** [CMakeFiles/util.dir/build.make:251: CMakeFiles/util.dir/src/threadpool.cpp.o] Error 1
make[4]: *** [CMakeFiles/Makefile2:124: CMakeFiles/util.dir/all] Error 2
make[3]: *** [Makefile:160: all] Error 2
make[2]: *** [CMakeFiles/util.dir/build.make:131: util-prefix/src/util-stamp/util-build] Error 2
make[1]: *** [CMakeFiles/Makefile2:178: CMakeFiles/util.dir/all] Error 2
make: *** [Makefile:103: all] Error 2
I followed the instruction to generate the Makefile and succeeded.
While the make process, some error occurred while compiling the "threadpool.cpp", I think it's a syntax error.
I know almost nothing about c++, but I'm very interested in glass3, so please help.
The detailed error information are as follows:
[ 17%] Performing build step for 'util'
Scanning dependencies of target util
[ 3%] Building CXX object CMakeFiles/util.dir/src/baseclass.cpp.o
[ 6%] Building CXX object CMakeFiles/util.dir/src/cache.cpp.o
[ 9%] Building CXX object CMakeFiles/util.dir/src/config.cpp.o
[ 12%] Building CXX object CMakeFiles/util.dir/src/date.cpp.o
[ 16%] Building CXX object CMakeFiles/util.dir/src/fileutil.cpp.o
[ 19%] Building CXX object CMakeFiles/util.dir/src/geo.cpp.o
[ 22%] Building CXX object CMakeFiles/util.dir/src/glassid.cpp.o
[ 25%] Building CXX object CMakeFiles/util.dir/src/glassmath.cpp.o
[ 29%] Building CXX object CMakeFiles/util.dir/src/logger.cpp.o
[ 32%] Building CXX object CMakeFiles/util.dir/src/queue.cpp.o
[ 35%] Building CXX object CMakeFiles/util.dir/src/stringutil.cpp.o
[ 38%] Building CXX object CMakeFiles/util.dir/src/taper.cpp.o
[ 41%] Building CXX object CMakeFiles/util.dir/src/threadbaseclass.cpp.o
[ 45%] Building CXX object CMakeFiles/util.dir/src/threadpool.cpp.o
In file included from /home/chris/github/neic-glass3-master/util/src/threadpool.cpp:1:
/home/chris/github/neic-glass3-master/util/include/threadpool.h:77:19: error: ‘std::function’ has not been declared
77 | void addJob(std::function<void()> newJob);
| ^~~~~~~~
/home/chris/github/neic-glass3-master/util/include/threadpool.h:77:27: error: expected ‘,’ or ‘...’ before ‘<’ token
77 | void addJob(std::function<void()> newJob);
| ^
/home/chris/github/neic-glass3-master/util/include/threadpool.h:106:18: error: ‘function’ is not a member of ‘std’
106 | std::queue<std::function<void()>> m_JobQueue;
| ^~~~~~~~
/home/chris/github/neic-glass3-master/util/include/threadpool.h:17:1: note: ‘std::function’ is defined in header ‘’; did you forget to ‘#include ’?
16 | #include
+++ |+#include
17 | #include
/home/chris/github/neic-glass3-master/util/include/threadpool.h:106:18: error: ‘function’ is not a member of ‘std’
106 | std::queue<std::function<void()>> m_JobQueue;
| ^~~~~~~~
/home/chris/github/neic-glass3-master/util/include/threadpool.h:106:18: note: ‘std::function’ is defined in header ‘’; did you forget to ‘#include ’?
/home/chris/github/neic-glass3-master/util/include/threadpool.h:106:32: error: template argument 1 is invalid
106 | std::queue<std::function<void()>> m_JobQueue;
| ^
/home/chris/github/neic-glass3-master/util/include/threadpool.h:106:32: error: template argument 2 is invalid
/home/chris/github/neic-glass3-master/util/include/threadpool.h:106:33: error: expected unqualified-id before ‘>’ token
106 | std::queue<std::function<void()>> m_JobQueue;
| ^~
/home/chris/github/neic-glass3-master/util/src/threadpool.cpp:25:6: error: no declaration matches ‘void glass3::util::ThreadPool::addJob(std::function<void()>)’
25 | void ThreadPool::addJob(std::function<void()> newjob) {
| ^~~~~~~~~~
In file included from /home/chris/github/neic-glass3-master/util/src/threadpool.cpp:1:
/home/chris/github/neic-glass3-master/util/include/threadpool.h:77:7: note: candidate is: ‘void glass3::util::ThreadPool::addJob(int)’
77 | void addJob(std::function<void()> newJob);
| ^~~~~~
/home/chris/github/neic-glass3-master/util/include/threadpool.h:31:7: note: ‘class glass3::util::ThreadPool’ defined here
31 | class ThreadPool : public util::ThreadBaseClass {
| ^~~~~~~~~~
/home/chris/github/neic-glass3-master/util/src/threadpool.cpp: In member function ‘virtual glass3::util::WorkState glass3::util::ThreadPool::work()’:
/home/chris/github/neic-glass3-master/util/src/threadpool.cpp:41:6: error: ‘m_JobQueue’ was not declared in this scope
41 | if (m_JobQueue.empty() == true) {
| ^~~~~~~~~~
/home/chris/github/neic-glass3-master/util/src/threadpool.cpp:50:33: error: ‘m_JobQueue’ was not declared in this scope
50 | std::function<void()> newjob = m_JobQueue.front();
| ^~~~~~~~~~
/home/chris/github/neic-glass3-master/util/src/threadpool.cpp: In member function ‘int glass3::util::ThreadPool::getJobQueueSize()’:
/home/chris/github/neic-glass3-master/util/src/threadpool.cpp:82:35: error: ‘m_JobQueue’ was not declared in this scope
82 | int queuesize = static_cast(m_JobQueue.size());
| ^~~~~~~~~~
make[5]: *** [CMakeFiles/util.dir/build.make:251: CMakeFiles/util.dir/src/threadpool.cpp.o] Error 1
make[4]: *** [CMakeFiles/Makefile2:124: CMakeFiles/util.dir/all] Error 2
make[3]: *** [Makefile:160: all] Error 2
make[2]: *** [CMakeFiles/util.dir/build.make:131: util-prefix/src/util-stamp/util-build] Error 2
make[1]: *** [CMakeFiles/Makefile2:178: CMakeFiles/util.dir/all] Error 2
make: *** [Makefile:103: all] Error 2