【问题标题】:How to enable std::experimental::optional on Android如何在 Android 上启用 std::experimental::optional
【发布时间】:2017-04-10 08:41:47
【问题描述】:

我想在我的 Android 应用程序的 C++ 代码中使用可选项,但我无法弄清楚如何配置 STL 以支持 std::experimental::optional 或 std::optional。如果我只是将“-lc++experimental”添加到 cppFlags,则会出现构建失败,“找不到 -lc++experimental”。这就是我的 Gradle 文件的 externalNativeBuild 部分目前的样子。

externalNativeBuild {
    cmake {
        arguments "-DANDROID_STL=c++_shared"
        cppFlags "-std=c++11", "-frtti", "-fexceptions"
    }
}

如何启用 std::optional 或 std::experimental::optional 的使用?

编辑:我能够下载 boost 并改用 boost::optional ,这很容易,因为它是一个仅限标头的库。尽管如此,如果可能的话,知道如何使用 NDK 附带的一种 STL 还是很不错的。当我打开 $ANDROID_NDK_HOME/sources/cxx-stl/llvm-libc++/include/experimental/optional 时,我看到看起来像是 std::experimental::optional 的实现,但它被很多预处理器语句包围,我想象一下正在禁用它。

【问题讨论】:

  • 你的实现是否已经实现了?

标签: android c++ optional


【解决方案1】:

std::optionalC++17 STL 的一部分。如果您的编译器支持它添加-std=c++17否则我相信正确的标志是-std=c++1z

See this discussion for more details.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 2016-03-28
    • 2017-10-28
    • 2017-02-21
    相关资源
    最近更新 更多