Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 叮当声3.9,自动加速和增压_C++_Boost_Clang - Fatal编程技术网

C++ 叮当声3.9,自动加速和增压

C++ 叮当声3.9,自动加速和增压,c++,boost,clang,C++,Boost,Clang,我在c++1z模式下尝试用Clang3.9编译boost时遇到了错误,因为在c++17中删除了auto_ptr。但是,我成功地用c++14模式编译了boost,并将lib文件链接到用c++1z模式编译的可执行文件。那么,将来会有任何ABI问题或潜在的bug吗?自动ptr不应该有任何ABI问题,因为它只是一个标题功能-在libc++.dylib中没有任何内容 在包含任何libc++头之前,还可以通过定义\u LIBCPP\u ENABLE\u CXX17\u REMOVED\u auto\u pt

我在c++1z模式下尝试用Clang3.9编译boost时遇到了错误,因为在c++17中删除了auto_ptr。但是,我成功地用c++14模式编译了boost,并将lib文件链接到用c++1z模式编译的可执行文件。那么,将来会有任何ABI问题或潜在的bug吗?

自动ptr不应该有任何ABI问题,因为它只是一个标题功能-在libc++.dylib中没有任何内容

在包含任何libc++头之前,还可以通过定义
\u LIBCPP\u ENABLE\u CXX17\u REMOVED\u auto\u ptr
自动\u ptr
返回到libc++中


最好的解决方案是,当您为C++17编译时,请您使用的任何boost库的维护人员不要使用
auto\u ptr

@当然,但是使用auto\u ptr的是boost库,所以我需要切换到C++14模式来通过编译,然后链接到c++1z可执行文件。但这不仅是auto_ptr的ABI问题,相反,它将两个具有不同编译器标志的目标文件组合在一起。但是,在c++1z模式下应用宏应该可以在不考虑ABI的情况下完成工作。同时,感谢分享这些知识。将两个具有不同编译器标志的目标文件组合在一起会有很多问题。有时候,它们只是不链接(
-arch i386
-arch x86\u 64
)。有时,它们会工作得很好(上面的例子)。有时,在您进行一次特定调用之前,它们似乎一直有效(
-d\u LIBCPP\u ABI\u ALTERNATE\u STRING\u布局
)。