[閒聊] 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