1

我在 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

是什么导致了这个错误?

4

1 回答 1

1

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

这符合要求。

于 2014-04-23T13:16:30.477 回答