Cuda生成VC ++解决方案时出现Boost错误(错误C2675)

时间:2013-01-04 10:18:10

标签: boost cuda compiler-errors

我在Visual Studio中创建了一个Cuda 5项目(VC ++),我想使用boost chrono API。当我加入boost/chrono.hpp时,出现以下错误:

Error   89  error C2675: unary '-' : 'T' does not define this operator or a conversion to a
 type acceptable to the predefined operator D:\StandaloneApp\Library\Vc\boost_1_52_0\boost\ratio\detail\mpl\abs.hpp
68  1   ThrustCompareSoaAndAos

第68行的代码块:

#if defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC_2)
namespace aux {
template< typename T, T n > struct abs_wknd
{
    BOOST_STATIC_CONSTANT(T, value = (n < 0 ? -n : n));
    typedef integral_c<T,value> type; // line 68
};
}
#endif

导致此错误的原因是什么?

1 个答案:

答案 0 :(得分:1)

我换了一行: BOOST_STATIC_CONSTANT(T,value =(n <0?-n:n)); 至 BOOST_STATIC_CONSTANT(T,value =(n&lt; 0?(n * -1):n));

这符合。