@@ -44,7 +44,7 @@ struct base_any_policy
44
44
virtual void clone (void * const * src, void ** dest) = 0;
45
45
virtual void move (void * const * src, void ** dest) = 0;
46
46
virtual void * get_value (void ** src) = 0;
47
- virtual void * get_value (void * const * src) = 0;
47
+ virtual const void * get_value (void * const * src) = 0;
48
48
virtual ::size_t get_size () = 0;
49
49
virtual const std::type_info& type () = 0;
50
50
virtual void print (std::ostream& out, void * const * src) = 0;
@@ -69,7 +69,7 @@ struct small_any_policy : typed_base_any_policy<T>
69
69
virtual void clone (void * const * src, void ** dest) { *dest = *src; }
70
70
virtual void move (void * const * src, void ** dest) { *dest = *src; }
71
71
virtual void * get_value (void ** src) { return reinterpret_cast <void *>(src); }
72
- virtual void * get_value (void * const * src) { return const_cast < void *>( reinterpret_cast <const void *>(src) ); }
72
+ virtual const void * get_value (void * const * src) { return reinterpret_cast <const void *>(src); }
73
73
virtual void print (std::ostream& out, void * const * src) { out << *reinterpret_cast <T const *>(src); }
74
74
};
75
75
@@ -94,7 +94,7 @@ struct big_any_policy : typed_base_any_policy<T>
94
94
**reinterpret_cast <T**>(dest) = **reinterpret_cast <T* const *>(src);
95
95
}
96
96
virtual void * get_value (void ** src) { return *src; }
97
- virtual void * get_value (void * const * src) { return const_cast < void *>(* src) ; }
97
+ virtual const void * get_value (void * const * src) { return * src; }
98
98
virtual void print (std::ostream& out, void * const * src) { out << *reinterpret_cast <T const *>(*src); }
99
99
};
100
100
@@ -245,7 +245,7 @@ class any
245
245
const T& cast () const
246
246
{
247
247
if (policy->type () != typeid (T)) throw anyimpl::bad_any_cast ();
248
- T* r = reinterpret_cast <T*>(policy->get_value (&object));
248
+ const T* r = reinterpret_cast <const T*>(policy->get_value (&object));
249
249
return *r;
250
250
}
251
251
0 commit comments