Qt有自己的boost :: optional替代品吗?

时间:2015-11-16 13:07:42

标签: c++ qt boost

Qt有自己的boost :: optional替代方案,还是应该使用boost :: optional?

5 个答案:

答案 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