Qt有自己的boost :: optional替代方案,还是应该使用boost :: optional?
答案 0 :(得分:4)
似乎QVariant
已经可以执行boost::optional
的目的。你有:
bool QVariant::isNull() const
bool QVariant::isValid() const
Type QVariant::type()
static QVariant QVariant::fromValue(const T & value)
T QVariant::value()
因此,您可以包装任何类型,检查变量是否为null或有效,或者甚至获取要与if或switch语句一起使用的类型。
答案 1 :(得分:3)
Qt有'variant'类型,但不是'optional'类型。我认为boost::optional
是一个合理的选择。
答案 2 :(得分:2)
在Qt的QVariant容器之上实现了qt-maybe template,但它不在“标准”qt lib中。
答案 3 :(得分:2)
在 C++17 中引入了 std::optional: https://en.cppreference.com/w/cpp/utility/optional
我认为它在 Qt 项目中比提升一个更有用。 Qt 中仍然没有任何 QOptional 类。
答案 4 :(得分:1)
否目前没有替代boost :: optional的选择。您也可以参考此主题:boost::optional alternative in C++ Standard Library