C++26中最简单的元组实现是什么?

wvmv3b1j  于 2024-01-09  发布在  其他
关注(0)|答案(1)|浏览(146)

C++26在使模板参数包更符合人体工程学方面取得了一些进展。例如,P2662: Pack indexing已经被接受为标准。有了这个和其他相关的建议,人们可以做的最简单的tuple实现是什么?
我在想象一些沿着线路的东西:

  1. template <typename... T>
  2. struct tuple {
  3. T... m;
  4. };
  5. tuple<int, float> tup{};
  6. float f = tup.m[1];

字符串
有可能写出这样的东西吗?如果不完全使用这种语法,那么怎么写?如果根本不可能,缺少什么建议来实现这一点?

fafcakar

fafcakar1#

给您:

  1. #include <iostream>
  2. #include <utility>
  3. template <typename ...P>
  4. auto make_my_tuple(P &&... args)
  5. {
  6. return [...args = std::forward<P>(args)]<std::size_t I> -> auto &&
  7. {
  8. return args...[I];
  9. };
  10. }
  11. int main()
  12. {
  13. auto t = make_my_tuple(1, 2.2f, 3.3);
  14. std::cout << t.operator()<1>() << '\n'; // Like `get<1>()`.
  15. }

字符串
当然,我是半开玩笑的,但是你可以创建一个模板类来 Package 这些类,并给它们一个像样的接口。

展开查看全部

相关问题