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

时间:2015-03-26 00:56:19

标签: c++ cuda thrust

我已经进行了一系列与unary_function和binary_functions有关的推力调试,但我已经成功找到了他们。 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 Files\NVIDIA GPU Computing Toolkit\CUDA\v7.0\include\thrust/detail/type_traits.h(607): error : incomplete type is not allowed

任何调试方法都非常感谢!

1 个答案:

答案 0 :(得分:0)

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