И это всё МОЁ

Добрый день.


Версия Qt с данным багом: Qt5.15.1.


Версия Qt без данного бага: Qt5.12.9.


Повторно описывать подробно не буду, если что милости прошу на страницу бага (https://bugreports.qt.io/browse/QTBUG-88125).


Если у нас есть некий производный от QObject (или другого в его иерархии) с макросом Q_OBJECT и если в данном заголовочном файле есть подключение <bsoncxx/types.hpp> то будет ошибка компиляции метаобъектным компилятором Qt (MOC).


Проблема заключается в следующих строках файла <bsoncxx/types.hpp>:


enum class type : std::uint8_t {
#define BSONCXX_ENUM(name, val) k_##name = val,
#include <bsoncxx/enums/type.hpp>
#undef BSONCXX_ENUM
};


И вот содержимое <bsoncxx/enums/type.hpp>:


#ifndef BSONCXX_ENUM
#error "This header is only meant to be included as an X-macro over BSONCXX_ENUM"
#endif

BSONCXX_ENUM(double, 0x01)
BSONCXX_ENUM(utf8, 0x02)
BSONCXX_ENUM(document, 0x03)
BSONCXX_ENUM(array, 0x04)
BSONCXX_ENUM(binary, 0x05)
BSONCXX_ENUM(undefined, 0x06)
BSONCXX_ENUM(oid, 0x07)
BSONCXX_ENUM(bool, 0x08)
BSONCXX_ENUM(date, 0x09)
BSONCXX_ENUM(null, 0x0A)
BSONCXX_ENUM(regex, 0x0B)
BSONCXX_ENUM(dbpointer, 0x0C)
BSONCXX_ENUM(code, 0x0D)
BSONCXX_ENUM(symbol, 0x0E)
BSONCXX_ENUM(codewscope, 0x0F)
BSONCXX_ENUM(int32, 0x10)
BSONCXX_ENUM(timestamp, 0x11)
BSONCXX_ENUM(int64, 0x12)
BSONCXX_ENUM(decimal128, 0x13)
BSONCXX_ENUM(maxkey, 0x7F)
BSONCXX_ENUM(minkey, 0xFF)









 , ,