C++ 铿锵++;错误在<;实验性/任何>;
编译包含C++ 铿锵++;错误在<;实验性/任何>;,c++,clang,C++,Clang,编译包含的代码时出错 main.cpp中的代码: #include <experimental/any> int main() { } 编译后出错: 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_cast
的代码时出错
main.cpp中的代码
:
#include <experimental/any>
int main() { }
编译后出错:
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.
在main.cpp:2中包含的文件中:
/usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../../../../include/c++/5.4.0/experimental/any:364:34:错误:
没有名为“任何施法者”的模板;你是说“任何演员”吗?
返回静态施法(uu任意施法者(u任意));
^
/usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../../../../../include/c++/5.4.0/experimental/any:361:30:注:
“任何演员”在此声明
内联常量值类型*任意常量转换(常量任意*\任意)无例外
^
/usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../../../../include/c++/5.4.0/experimental/any:372:34:错误:
没有名为“任何施法者”的模板;你是说“任何演员”吗?
返回静态施法(uu任意施法者(u任意));
^
/usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../../../../../include/c++/5.4.0/experimental/any:369:24:注:
“任何演员”在此声明
内联ValueType*任意_cast(任意*uu任意)无例外
^
产生2个错误。
如中所述:
您可以尝试使用libc++。可能libstdc++的新头文件与Clang不兼容
事实证明这是真的。CLAN 3.9仍然是实验性的,因此它使用实验头,包括实验C++标准库。默认情况下,它是由GCC提供的,因此GCC实现和Clang实现之间会出现不兼容。您可以尝试使用libc++。在libstdc++的新头文件中可能有与Clang不兼容的地方,这是有原因的。您可以传递
-stdlib=libc++
。
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.