我在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
导致此错误的原因是什么?
答案 0 :(得分:1)
我换了一行: BOOST_STATIC_CONSTANT(T,value =(n <0?-n:n)); 至 BOOST_STATIC_CONSTANT(T,value =(n&lt; 0?(n * -1):n));
这符合。