 
       // range view of naked pointers
       make_range_view(Z.data().get(), 4));
-  assert(cudaSuccess == cudaDeviceSynchronize());
 
   // print values from original device_vector<float> Z 
   // to ensure that range view was mapped to this vector

      saxpy_functor<View1,View2,View3>(A,X,Y,Z));
}

template<class View1, class View2, class View3>
__global__
void saxpy_kernel(float A, View1 X, View2 Y, View3 Z)
{
  saxpy(A, X, Y, Z);
}

struct f1 : public thrust::unary_function<float,float>
{
  __host__ __device__

  thrust::device_vector<float> Y(y, y + 4);
  thrust::device_vector<float> Z(z, z + 4);

  saxpy(
      2.0, 

      // make a range view of a pair of transform_iterators
