clover: Allow storing a range into a container of different (but compatible) element...
authorFrancisco Jerez <currojerez@riseup.net>
Tue, 18 Feb 2014 13:52:25 +0000 (14:52 +0100)
committerFrancisco Jerez <currojerez@riseup.net>
Fri, 21 Feb 2014 11:51:22 +0000 (12:51 +0100)
Tested-by: Tom Stellard <thomas.stellard@amd.com>
src/gallium/state_trackers/clover/util/range.hpp

index afa5f7730bf989adf094ea7e86c55800c95e1aaa..b082359ee86cecfe52256696d82380097515e222 100644 (file)
@@ -38,25 +38,25 @@ namespace clover {
    template<typename T, typename V>
    struct range_store_traits;
 
-   template<typename T>
-   struct range_store_traits<T, std::vector<T>> {
+   template<typename T, typename S>
+   struct range_store_traits<T, std::vector<S>> {
       typedef void enable;
 
       template<typename R>
-      static std::vector<T>
+      static std::vector<S>
       create(const R &r) {
          return { r.begin(), r.end() };
       }
    };
 
-   template<typename T, std::size_t N>
-   struct range_store_traits<T, std::array<T, N>> {
+   template<typename T, typename S, std::size_t N>
+   struct range_store_traits<T, std::array<S, N>> {
       typedef void enable;
 
       template<typename R>
-      static std::array<T, N>
+      static std::array<S, N>
       create(const R &r) {
-         std::array<T, N> v;
+         std::array<S, N> v;
          assert(r.size() == v.size());
          copy(r, v.begin());
          return v;