[闲聊] C++ 支援相依型别的话会长怎样?

楼主: CoNsTaR ((const *))   2022-03-03 18:04:01
如题,C++ 有可能在未来支援 dependent types 吗?如果支援的话大家觉得会长怎样?
一些 cardinality 无限大的 types 不支援完全可以理解
但是像 integrals, std::array of integral 之类的 types 要支援应该不是问题?
到了 C++20,已经很多东西都有 constexpr 的版本了
用起来已经比之前的版本开心很多,但仍然和真正的 dependent types 有一段不小的差

如果有一天真的能把变量当作 template arguments 传进 templates 里,C++ 真的会有
用很多
或者退而求其次,至少支援个 constexpr function parameters 也好
这样至少在 constexpr 的前提下有 dependent types 可以用
有 C++ 有没有可能在未来支援 dependent types 的挂吗?
或是有没有看过相关的提案或是正式的讨论呢?
作者: simon860730 (╰电磁学╮╭爆炸囉╯)   2022-03-04 09:04:00
integer...?
楼主: CoNsTaR ((const *))   2022-03-04 11:35:00
我的意思是 std::is_integral<T>::value 是 true 的那些types
作者: Lipraxde (Lipraxde)   2022-03-04 12:31:00
始终不明白 dependent types 的好处
作者: sarafciel (Cattuz)   2022-03-04 13:53:00
C++要弄non-constexpr dependent type应该很难XDconstexpr dependent types的话 我觉得现在已经是了只是写起来很费工而已
作者: Lipraxde (Lipraxde)   2022-03-05 11:10:00
Compile 时都先算好,打算付出多少成本获得多少收获?不同 type codegen 出来的东西是不一样的耶,虽然有印象看过用 JIT 来做 (用于加速数学计算),但忘记关键字了QQ
作者: LPH66 (-6.2598534e+18f)   2022-03-05 11:32:00
就算写 f<v>(), 实际照 v 的值去选要呼叫的 f<A> 还是得在runtime 做吧 (在 v 非 constexpr 的前提下)那这其实跟写个大 switch 好像没什么差别如果硬要把它藏起来, 我能想到接近的是 std::visit(C++17 新加的内建 Visitor Pattern)对, 所以我说这是硬要藏起来而已这样看起来其实你的 v 用个 enum 表示好像比较像你在想的?可能状况数很少, 所以可以先产生起来放现在对于这种 use case 好像也就是手动生出来放之后收到一个对照表里参照, 要用时照 v 值去对照表里找出来用
作者: Lipraxde (Lipraxde)   2022-03-06 00:12:00
恩...最终还是会需要在 runtime 时 dispatch 吧?如果说都要 compile time 做好的话... template metaprogramming 还不够好玩吗 Orz
作者: adks3489 (James)   2022-03-06 21:22:00
像P1045R1这个提案吗?

Links booklink

Contact Us: admin [ a t ] ucptt.com