请问怎么比较两个boost:any类型是否相等

请教如何比较两个boost::any类型是否相等?

bool IsEqual(boost::any obj1, boost::any obj2)
{
    return obj1 == obj2;
}


请问如何判断obj1是否和obj2相等呢?改写boost::any文件也可以。我觉得判断any::content内容是否相等是比较可行的,我将其改为了public类型,这样内部数据就可以对外暴露。但内部该如何修改我就不太清楚了,水平有限,希望高手帮忙看看。

------解决方案--------------------
不要通过修改库源代码来满足你的需求,尽量自己扩展库。 

另外: 读boost::any时,你需要提供其中的类型。 

template<typename T>
bool IsEqual(boost::any obj1, boost::any obj2)
{
     try
    {
        return any_cast<T>(obj1) == any_cast<T>(obj1);
        
    }
    catch(const boost::bad_any_cast &)
    {
        //return false;
    }
    //return obj1 == obj2;
    return false;
}




------解决方案--------------------
any只是一个包装,不知道类型无法使用,当然不可能比较。

------解决方案--------------------
就是因为any必须是非模板才用了模板holder继承placeholder,any根本不知道自己保存的类型,最多只能用type()来获取typeid

如果允许修改any的源码,可以尝试在holder中加入与holder类型的==判断(虚函数),先判断typeid是否相等,相等则在placeholder中cast后比较
然后在any里调用holder的==判断