【发布时间】:2016-09-06 23:49:09
【问题描述】:
编译包含<experimental/any>的代码时出现错误。
main.cpp中的代码:
#include <experimental/any>
int main() { }
编译这个(clang 版本是 3.9):
clang++ main.cpp -o main -std=c++1z
编译后出错:
In file included from main.cpp:2:
/usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/experimental/any:364:34: error:
no template named '__any_caster'; did you mean 'any_cast'?
return static_cast<_ValueType*>(__any_caster<_ValueType>(__any));
^
/usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/experimental/any:361:30: note:
'any_cast' declared here
inline const _ValueType* any_cast(const any* __any) noexcept
^
/usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/experimental/any:372:34: error:
no template named '__any_caster'; did you mean 'any_cast'?
return static_cast<_ValueType*>(__any_caster<_ValueType>(__any));
^
/usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/experimental/any:369:24: note:
'any_cast' declared here
inline _ValueType* any_cast(any* __any) noexcept
^
2 errors generated.
【问题讨论】:
-
您可以尝试使用 libc++。也许在 libstdc++ 的新标头中与 Clang 不兼容。
-
有一个manual page 。你可以传
-stdlib=libc++。