问题:编译时出现错误:
d:\tbb40_20120613oss\include\tbb\tbb_exception.h(357) : error C2039: “copy_exception”: 不是“std”的成员
d:\tbb40_20120613oss\include\tbb\tbb_exception.h(357) : error C3861: “copy_exception”: 找不到标识符
搜索结果:http://software.intel.com/en-us/forums/showthread.php?t=105837
Visual Studio 2012 I'm trying out the release candidate of Visual Studio 2012. tbb_exception.h does not compile due to use of std::copy_exception(). I'm having a hard time finding any info on this method. Is it really part of the std namespace? Will VS2012 be supported soon?
Thanks,
Paul
| |
Vladimir Polin (Intel) | June 8, 2012 11:28 PM PDT |
Rate
| #1 |
---|---|---|---|
Visual Studio 2012 Hello, you are right,
the issue is the same for clang (
http://software.intel.com/en-us/forums/showthread.php?t=102603&o=a&s=lr), C++x0 std::copy_exception was renamed to std::make_exception_ptr in final version of C++11 standard. So you need to either rename it in the header or define /DTBB_USE_CAPTURED_EXCEPTION=1 to not use exception_ptr like for old compilers.
We are working on how is better to support both cases at once (i.e. vs2010 and vs2012).
thanks for the report
--Vladimir
Update - details on the issue:
http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#1130
| |||
Sergey Kostrov | June 9, 2012 4:22 PM PDT |
Rate
| #2 |
---|---|---|---|
Visual Studio 2012
Quoting
paul3579
I'm trying out the release candidate of Visual Studio 2012. tbb_exception.h does not compile due to use of std::copy_exception(). I'm having a hard time finding any info on this method. Is it really part of the std namespace?
I just done verifications with different versions/editions of Visual Studio and MinGW. Here are results: - Visual Studio 2005 Professional Edition - 'copy_exception' is not supported - Visual Studio 2008 Express Edition - 'copy_exception' is not supported - Visual Studio 2010 Express Edition - 'copy_exception' is supported in ' exception' header file - MinGW v3.4.2 - 'copy_exception' is not supported I don't think that Microsoft will remove that support in Visual Studio 2012. | |||
简单解决办法(可能不规范):
更改该.h中
tbb_exception_ptr ( const captured_exception& src ) : my_ptr(std::copy_exception(src)) {}
为
tbb_exception_ptr ( const captured_exception& src ) : my_ptr(NULL) {}
问题解决,但可能爆异常时有问题!