2013-01-04 86 views
1

我在Visual Studio中创建了一个Cuda 5项目(VC++),我想使用boost chrono API。当我包括boost/chrono.hpp,我有以下错误:Cuda生成的VC++解决方案(错误C2675)升压错误

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

你可以在第68行发布代码吗? –

+0

是否包含在.cu文件中? – alrikai

+0

@alrikai:[这不是我的问题,但我有同样的问题。]是的,这发生在使用nvcc编译.cu时。相同的代码在Linux上编译得很好。 – shinjin

回答

1

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

这遵守。