之前在《讓函式回傳多個值:std::tuple》這篇文章中,曾經介紹過 C++11 引進的 std::tuple
這個可以用來儲存多種不同型別的類別了。
而由於 tuple
內部可以存放不同型別的資料,所以雖然可以用 std::tie()
或是 C++17 的 structured binding 來存取資料,但是都是需要針對特定的 tuple
來寫;實際上如果想針對所有類型的 tuple
寫個通用的函式,其實還滿麻煩的。
在 C++11 比較好的方法,應該就是 Parameter Pack、以類似遞迴的方式來寫了吧?而由於要透過 std::get<>()
這個函式去存取 tuple
的值的時候,索引值會需要是編譯階段的參數,所以會變得更為難寫…