xhawk18/promise-cpp

请问可否在不支持rtti的环境中运行?

Closed this issue · 4 comments

看到代码中用到了一些typeid的判断,我们的项目由于包大小的原因禁用了rtti

typeid没办法去掉,因为里面用到 any 类型,类型转换倚赖 typeid 做判断

我尝试给anyHolder生成一个id替换掉rtti的typeid~~

比如类似这样创建一个type_id?
不清楚这个办法是否足够健壮。。。

代码更新 df0544f

#include <iostream>

template<typename T>
ptrdiff_t type_id() {
    static char idHolder;
    return (ptrdiff_t)&idHolder;
}


int main() {

    std::cout << type_id<int>() << "\n";
    std::cout << type_id<char>() << "\n";
    std::cout << type_id<decltype(main)>() << "\n";
    std::cout << type_id<decltype(main)>() << "\n";
    
    return 0;
}

抱歉才看到,感谢~