boostorg / boostorg/asio

boost 1.77.0 and newer conflicts with Qt5

未关闭
#393 3 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
C++
星标
1.6k
派生
485
PR 合并指标
30 天内没有已合并 PR

描述

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 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: https://github.com/boostorg/asio/commit/3521da0834fd20a520dc33e5b256c59b20827842 introduced that function.

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。