c++的绑定实现.

本文深入探讨了模板元编程的高级技巧,包括使用编译时计算、条件表达式和类型推导来实现动态绑定。通过具体代码示例,展示了如何在C++中利用模板元编程进行类型检查和操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<型名...>构 空器{用 型=;};<型名...A>用 是空型=型名 空器<A...>::;<型名 T,型名=>构 是灵针:假型{};<型名 T>构 是灵针<T,是空型<推导(求值<T>().符号->()),推导(求值<T>().())>>:真型{};//推导失败没啥
//有这两个操作的就是灵针.
//只要返回入,则可以导入元<型名 F>中
枚 针型{是引,是针,是灵};<型名 F>常式 整 求针型(){(是指针值<F>)中 是针;
    异 如(是灵针<F>::)中 是灵;//要加个值
    异 中 是引;
}//要加常式,<整 N,型名 P,型名 F>动 绑定实现(P&&p,F&&f){
    如 常式(N==1)[&](&&...o){(p->*f)(o...);};
    异 如 常式(N==2)[&](&&...o){(p.()->*f)(o...);};
    异 中[&](&&...o){(p.*f)(o...);};
}//要这样使用,这样分发,我叉,编译时计算的N,一定要加常式,这是关键<型名 P,型名 F>动 绑定(P&&p,F&&f){
    常式 整 N=求针型<F>();
    中 绑定实现<N>(前向<P>(p),前向<F>(f));
}//在这里,直接F.

代码如上.关键点是只要是使用编译时的N,无论在哪里都要加上常式.
参考地址.
人家的实现更复杂.我也不喜欢再绑定参数了,麻烦.
要深刻理解下面代码,如何编译时运算?,还是基础不牢:

template<std::size_t I>
auto& get(person& p) {
    if constexpr (I == 0) {
        return p.id;
    }
    else if constexpr (I == 1) {
        return p.name;
    }
    else if constexpr (I == 2) {
        return p.age;
    }
}
template <typename T>
std::string to_string(T t){
    if constexpr(std::is_same_v<T, std::string>)//常式,常式,有编译时就有常式.
        return t;
    else
        return std::to_string(t);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值