【问题标题】:No <optional> in MS Visual Studio 2013 - what to do?MS Visual Studio 2013 中没有 <optional> - 怎么办?
【发布时间】:2015-10-07 02:13:41
【问题描述】:

我想使用std::experimental::optional,但 MSVS 2013 告诉我找不到标头。

  • 为什么不在那里?
  • 我可以根据其他地方的代码自行推出吗?可能是 C++14 提案?

【问题讨论】:

  • 你试过自己动手吗?
  • @PiotrS.:请将其作为答案,以便我接受。
  • @Yakk:不,因为我知道有很多极端的功能和一堆设计决策,我不是最适合做的人。已经有参考实现,最好使用其中之一。
  • FTR 没有 &lt;optional&gt; 的规范,但有 &lt;experimental/optional&gt; 的 TS 草案——有点类似于之前的 &lt;tr1/functional&gt;(并非所有 C++ 实现都选择实现)有一个&lt;functional&gt;(这是标准的一部分)。

标签: visual-studio-2013 c++14 optional c++-standard-library c++17


【解决方案1】:

std::experimental::optional 源自 Boost.Optional 库,并且此实现在 Visual C++ 12.0 中运行良好(尽管它与 a little 不同)。参考单头实现,基于N3793 提案文件,可以在here找到。

Visual Studio 附带的受支持的 C++11/14/1z 核心和库功能的最新列表可从 Visual C++ Team blog,尤其是 this post 中找到。一组来自微软的标准库实现(和一些扩展)的头文件可以查看here

【讨论】:

  • 您没有完全回答为什么 std::optional 不在 VC++ 中。没有一个链接甚至提到可选的。
  • 我来这里是为了在 VS2015 中搜索std::experimental::optional。它还没有在里面,是吗?
  • @Ela782 一样,虽然时间已经过去了,但我似乎找不到它
  • @Alatau:谢谢。 VS "15" 是 下一个 VS,但不是 VS 2015。这可能意味着它很可能不会出现在 VS 2015 中,但肯定会出现在下一个 VS 版本中。
  • VS 2017 RC 现已推出,支持&lt;optional&gt;
【解决方案2】:

我发现这个实现可以用 MSVC2013 编译。请注意,只有编译,其他一切都不能保证。

https://github.com/mapbox/variant/blob/master/include/mapbox/optional.hpp

【讨论】:

    【解决方案3】:

    我在 msvc2015 上使用了这个,它工作正常:

    https://raw.githubusercontent.com/akrzemi1/Optional/master/optional.hpp

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-13
      • 2015-02-23
      • 1970-01-01
      • 2014-12-01
      • 2013-08-30
      • 1970-01-01
      • 2015-02-26
      相关资源
      最近更新 更多