楼主:
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 的挂吗?
或是有没有看过相关的提案或是正式的讨论呢?
楼主:
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 的好处
C++要弄non-constexpr dependent type应该很难XDconstexpr dependent types的话 我觉得现在已经是了只是写起来很费工而已
作者:
Lipraxde (Lipraxde)
2022-03-05 11:10:00Compile 时都先算好,打算付出多少成本获得多少收获?不同 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这个提案吗?