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

Let*_*_Be 7 c++ qt boost

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

Tob*_*ght 5

Qt具有“变体”类型,但没有“可选”类型。我认为这boost::optional是一个合理的选择。


dte*_*ech 5

似乎QVariant已经可以完成boost::optional预期的工作。你有:

bool QVariant::isNull() const
bool QVariant::isValid() const
Type QVariant::type() 
static QVariant QVariant::fromValue(const T & value)
T QVariant::value()
Run Code Online (Sandbox Code Playgroud)

因此,您可以包装任何类型,检查变量是否为null或有效,甚至可以使用if或switch语句使用该类型。

  • 可以,但是QVariant太过分了。它具有更多开销,并且隐藏其内容的类型。 (4认同)
  • QVariant 不太适合选项的用例。来自 QVariant 的文档:空变体不是单一状态,如果两个空变体不包含相似的空值,则它们很容易在 == 运算符上返回 false。 (2认同)

Kon*_*is' 2

在 Qt 的 QVariant 容器之上实现了qt-maybe 模板 ,但它不在“标准”qt 库中。