[英]Clang does not work properly with std::experimental::optional
[英]std::experimental::optional with ndk/clang
我正在嘗試構建使用std::experimental::optional
。 對於Linux,它編譯得很好,但對於android / ndk編譯器拋出:
error: no member named 'experimental' in namespace 'std'
我正在使用polly工具鏈android-ndk-r17-api-24-armeabi-v7a-clang-libcxx14
並set(CMAKE_CXX_STANDARD 14)
# Copyright (c) 2015-2018, Ruslan Baratov
# Copyright (c) 2017-2018, Robert Nitsch
# Copyright (c) 2018, David Hirvonen
# All rights reserved.
if(DEFINED POLLY_ANDROID_NDK_R17_API_24_ARMEABI_V7A_CLANG_LIBCXX14_CMAKE_)
return()
else()
set(POLLY_ANDROID_NDK_R17_API_24_ARMEABI_V7A_CLANG_LIBCXX14_CMAKE_ 1)
endif()
include("${CMAKE_CURRENT_LIST_DIR}/utilities/polly_clear_environment_variables.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/utilities/polly_init.cmake")
set(ANDROID_NDK_VERSION "r17")
set(CMAKE_SYSTEM_VERSION "24")
set(CMAKE_ANDROID_ARCH_ABI "armeabi-v7a")
set(CMAKE_ANDROID_ARM_NEON TRUE)
set(CMAKE_ANDROID_ARM_MODE TRUE) # 32-bit ARM
set(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION "clang")
set(CMAKE_ANDROID_STL_TYPE "c++_static") # LLVM libc++ static
polly_init(
"Android NDK ${ANDROID_NDK_VERSION} / \
API ${CMAKE_SYSTEM_VERSION} / ${CMAKE_ANDROID_ARCH_ABI} / \
Clang / c++14 support / libc++ static"
"Unix Makefiles"
)
include("${CMAKE_CURRENT_LIST_DIR}/utilities/polly_common.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/flags/cxx14.cmake") # before toolchain!
include("${CMAKE_CURRENT_LIST_DIR}/os/android.cmake")
我試着構建一個最小的例子:
#include <experimental/optional>
#include <iostream>
int main() {
std::experimental::optional<int> b = 6;
std::cout << b.value() << std::endl;
return 0;
}
但它使用相同的工具鏈可以很好地構建。
我道歉,我不能在這里發布我的代碼。 任何想法可能是什么問題?
更新到NDK r19並使用std::optional
。 它在C ++ 17中沒有實驗性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.