我想使用std::variant<Foo, Bar>
作为QVariant
的内部值。该怎么做?
#include <QCoreApplication>
#include <QMetaType>
#include <variant>
enum Foo{A, B};
enum class Bar{C, D};
Q_DECLARE_METATYPE(std::variant<Foo, Bar>);
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
return a.exec();
}
我收到此错误:
error: macro "Q_DECLARE_METATYPE" passed 2 arguments, but takes just 1
Q_DECLARE_METATYPE(std::variant<Foo, Bar>);
^
答案 0 :(得分:4)
问题是Q_DECLARE_METATYPE
是一个宏,而宏不喜欢,
。
您可以传递类型别名
using T = std::variant<Foo, Bar>;
Q_DECLARE_METATYPE(T)
或将其包装在额外的()
Q_DECLARE_METATYPE((std::variant<Foo, Bar>));