You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We have a self-written program which compiled without any issues until 1.75.0. I had some spare time and tried to find out, why the compiler reports syntax errors since 1.76.0.
In file included from/software/libs/boost/1.79.0/include/boost/asio/associated_cancellation_slot.hpp(20),
from /software/libs/boost/1.79.0/include/boost/asio.hpp(22),
from src/mainwindow.h(47),
from src/main.cpp(7):
/software/libs/boost/1.79.0/include/boost/asio/cancellation_signal.hpp(116): error: expected a ")"
void emit(cancellation_type_t type)
There are other source files, which also include asio.hpp which do not show this error. I added --save-temps (GCC)/-P (ICC) to the compiler flags and compared the resulting .ii/.i files.
The working source files contain:
void emit(cancellation_type_t type)
{
if (handler_)
handler_->call(type);
}
The non working source files:
void (cancellation_type_t type)
{
if (handler_)
handler_->call(type);
}
The headers should work around that with pop_macro /push_macro, however this doesn't work properly in boost version 1.77.0 on windows: chriskohlhoff/asio#895
Updating boost to a more recent version or appying the referenced patch is likely to fix the issue.
I forgot to mention, that we use the classic Intel Compiler. Looks like pop_options.hpp lacks the pop_macro calls in the section for the intel compilers.
We have a self-written program which compiled without any issues until 1.75.0. I had some spare time and tried to find out, why the compiler reports syntax errors since 1.76.0.
In file included from/software/libs/boost/1.79.0/include/boost/asio/associated_cancellation_slot.hpp(20),
from /software/libs/boost/1.79.0/include/boost/asio.hpp(22),
from src/mainwindow.h(47),
from src/main.cpp(7):
/software/libs/boost/1.79.0/include/boost/asio/cancellation_signal.hpp(116): error: expected a ")"
void emit(cancellation_type_t type)
There are other source files, which also include asio.hpp which do not show this error. I added --save-temps (GCC)/-P (ICC) to the compiler flags and compared the resulting .ii/.i files.
The working source files contain:
The non working source files:
The issue is caused by Qt5 which has a line
# define emit
in https://github.com/qt/qtbase/blob/5.15.2/src/corelib/kernel/qobjectdefs.h#L97 (/usr/include/qt5/QtCore/qobjectdefs.h
)Would it be possible to rename the function so that we can use a current Boost together with Qt5?
Note: 3521da0 introduced that function.
The text was updated successfully, but these errors were encountered: