Cherry-picked mariusmuja/flann@8c8b0e0cb879666797ab2ac51b9ee438bf84a183.
authorRoman Donchenko <roman.donchenko@itseez.com>
Wed, 2 Oct 2013 12:09:45 +0000 (16:09 +0400)
committerRoman Donchenko <roman.donchenko@itseez.com>
Wed, 2 Oct 2013 12:09:45 +0000 (16:09 +0400)
Original author: me.

modules/flann/include/opencv2/flann/any.h

index d62d491..4a58cf2 100644 (file)
@@ -44,7 +44,7 @@ struct base_any_policy
     virtual void clone(void* const* src, void** dest) = 0;
     virtual void move(void* const* src, void** dest) = 0;
     virtual void* get_value(void** src) = 0;
-    virtual void* get_value(void* const * src) = 0;
+    virtual const void* get_value(void* const * src) = 0;
     virtual ::size_t get_size() = 0;
     virtual const std::type_info& type() = 0;
     virtual void print(std::ostream& out, void* const* src) = 0;
@@ -70,7 +70,7 @@ struct small_any_policy : typed_base_any_policy<T>
     virtual void clone(void* const* src, void** dest) { *dest = *src; }
     virtual void move(void* const* src, void** dest) { *dest = *src; }
     virtual void* get_value(void** src) { return reinterpret_cast<void*>(src); }
-    virtual void* get_value(void* const * src) { return const_cast<void *>( reinterpret_cast<const void*>(src) ); }
+    virtual const void* get_value(void* const * src) { return reinterpret_cast<const void*>(src); }
     virtual void print(std::ostream& out, void* const* src) { out << *reinterpret_cast<T const*>(src); }
 };
 
@@ -95,7 +95,7 @@ struct big_any_policy : typed_base_any_policy<T>
         **reinterpret_cast<T**>(dest) = **reinterpret_cast<T* const*>(src);
     }
     virtual void* get_value(void** src) { return *src; }
-    virtual void* get_value(void* const * src) { return const_cast<void*>(*src); }
+    virtual const void* get_value(void* const * src) { return *src; }
     virtual void print(std::ostream& out, void* const* src) { out << *reinterpret_cast<T const*>(*src); }
 };
 
@@ -260,7 +260,7 @@ public:
     const T& cast() const
     {
         if (policy->type() != typeid(T)) throw anyimpl::bad_any_cast();
-        T* r = reinterpret_cast<T*>(policy->get_value(&object));
+        const T* r = reinterpret_cast<const T*>(policy->get_value(&object));
         return *r;
     }