Использую библиотечку astxx, которая использует Boost.Signals, использую в программе на Qt, сразу словил ошибку компиляции:
g++ -c -m64 -pipe -g -Wall -W -D_REENTRANT -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt/mkspecs/linux-g++-64 -I../queue-test -I/usr/include/QtCore -I/usr/include -I. -I../queue-test -I. -o main.o ../queue-test/main.cpp
In file included from /usr/include/boost/signals/connection.hpp:13:0,
from /usr/include/boost/signals/signal_template.hpp:18,
from /usr/include/boost/signals/signal0.hpp:24,
from /usr/include/boost/signal.hpp:19,
from /usr/include/astxx/manager/connection.h:40,
from /usr/include/astxx/manager.h:32,
from ../queue-test/main.cpp:8:
/usr/include/boost/signals/detail/signals_common.hpp:26:13: error: expected identifier before ‘protected’
/usr/include/boost/signals/detail/signals_common.hpp:26:13: error: expected unqualified-id before ‘protected’
../queue-test/main.cpp:75:1: error: expected ‘}’ at end of input
make: *** [main.o] Error 1
Описания способов решения нашел тут:
http://www.boost.org/doc/libs/1_45_0/doc/html/signals/s04.html
Пока же, временно, определил макрос:
#define BOOST_SIGNALS_NAMESPACE boost_signals
Upd:
В .pro файле добавил:
CONFIG += no_keywords
После чего такие конструкции перестанут компилироваться:
signals:
private slots:
public slots:
Заменить на:
Q_SIGNALS:
private Q_SLOTS:
public Q_SLOTS: