Clean up last bug fix with full support for const & (and presumably some support for const *) contained types.

This commit is contained in:
Jason Turner 2009-07-15 23:36:10 +00:00
parent ec2f81c674
commit 8dbb43f45f

View File

@ -326,7 +326,12 @@ namespace dispatchkit
{ {
if (ob.is_ref()) if (ob.is_ref())
{ {
return boost::cref((boost::any_cast<boost::reference_wrapper<Result> >(ob.get())).get()); if (!ob.get_type_info().m_is_const)
{
return boost::cref((boost::any_cast<boost::reference_wrapper<Result> >(ob.get())).get());
} else {
return boost::any_cast<boost::reference_wrapper<const Result> >(ob.get());
}
} else { } else {
return boost::cref(*(boost::any_cast<boost::shared_ptr<Result> >(ob.get()))); return boost::cref(*(boost::any_cast<boost::shared_ptr<Result> >(ob.get())));
} }
@ -345,7 +350,12 @@ namespace dispatchkit
{ {
if (ob.is_ref()) if (ob.is_ref())
{ {
return boost::cref((boost::any_cast<boost::reference_wrapper<Result> >(ob.get())).get()); if (!ob.get_type_info().m_is_const)
{
return boost::cref((boost::any_cast<boost::reference_wrapper<Result> >(ob.get())).get());
} else {
return boost::any_cast<boost::reference_wrapper<const Result> >(ob.get());
}
} else { } else {
return boost::cref(*(boost::any_cast<boost::shared_ptr<Result> >(ob.get()))); return boost::cref(*(boost::any_cast<boost::shared_ptr<Result> >(ob.get())));
} }
@ -364,7 +374,12 @@ namespace dispatchkit
{ {
if (ob.is_ref()) if (ob.is_ref())
{ {
return (boost::any_cast<boost::reference_wrapper<Result> >(ob.get())).get_pointer(); if (!ob.get_type_info().m_is_const)
{
return (boost::any_cast<boost::reference_wrapper<Result> >(ob.get())).get_pointer();
} else {
return (boost::any_cast<boost::reference_wrapper<const Result> >(ob.get())).get_pointer();
}
} else { } else {
return (boost::any_cast<boost::shared_ptr<Result> >(ob.get())).get(); return (boost::any_cast<boost::shared_ptr<Result> >(ob.get())).get();
} }