使用推力调试不完整的类型错误

Debugging incomplete type errors with thrust

本文关键字:类型 错误 调试      更新时间:2023-10-16

我对unary_function和binary_function进行了大量的推力调试,但我设法找到了它们。中的yes_type中存在除一个以外的所有类型错误和不完整类型错误

namespace is_assignable_ns
{
template<typename T1, typename T2>
  class is_assignable
{
  typedef char                      yes_type;
  typedef struct { char array[2]; } no_type;
  template<typename T> static typename add_reference<T>::type declval();
  template<unsigned int> struct helper { typedef void * type; };
  template<typename U1, typename U2> static yes_type test(typename helper<sizeof(declval<U1>() = declval<U2>())>::type);
  template<typename,typename> static no_type test(...);
  public:
    static const bool value = sizeof(test<T1,T2>(0)) == 1;
}; // end is_assignable
} // end is_assignable_ns

有人知道我目前使用的可能会调用哪些推力操作吗

#include <thrust/remove.h>
#include <thrust/count.h>
#include <thrust/unique.h>
#include <thrust/execution_policy.h>

我必须处理的唯一错误是:

C:Program FilesNVIDIA GPU Computing ToolkitCUDAv7.0includethrust/detail/type_traits.h(607): error : incomplete type is not allowed

任何调试方法都将不胜感激!

它在一个推力::unique()中发现我在unique运算符=中使用的结构没有返回,因此在通过yes_type()时返回了一个不完整的类型。