为什么std :: get使用模板参数而不是常规参数?

MBZ

std::get函数使用模板参数作为常规参数。
举个例子:

std::tuple <int, double, long &, const char *> bar(18, 6.5, 12, "Hello!");
cout << std::get<2>(bar); // Print the tuple’s third element.

为什么此功能采用这种方式设计?
为什么不使用常规参数呢?
例如,类似:std::get(bar, 2)std::get(2, bar)

迈克·西摩

函数必须具有在编译时指定的定义良好的返回类型。这里的模板特化get<2>是一个返回的函数long&但您的版本必须根据运行时指定的参数返回不同的类型,这是不可能的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么std :: stack不使用模板template参数?

来自分类Dev

为什么std :: copy_n采用模板参数而不是std :: size_t?

来自分类Dev

为什么std :: forward无法自己推断模板参数?

来自分类Dev

为什么std :: forward无法自己推断模板参数?

来自分类Dev

为什么不能使用模板模板参数将std :: vector <MyType>传递给此函数?

来自分类Dev

为什么`std :: sto` ...系列不是模板?

来自分类Dev

为什么模板参数推导因std :: function回调的可变参数模板参数而失败?

来自分类Dev

为什么void *作为模板参数可以用作函数参数而不是模板参数?

来自分类Dev

为什么void *作为模板参数可以用作函数参数而不是模板参数?

来自分类Dev

为什么`std :: pair`将`std :: tuple`作为ctor参数类型而不是`const std :: tuple&`?

来自分类Dev

为什么必须为“”使用std :: string()才能满足模板参数?

来自分类Dev

为什么不使用非类型模板参数实现std :: bind的占位符?

来自分类Dev

为什么我不能使用std:cin作为参数

来自分类Dev

为什么std :: function用作std :: not2的参数?

来自分类Dev

为什么std :: queue不是线程安全的?

来自分类Dev

为什么std :: declval不是constexpr?

来自分类Dev

当参数包含std :: function ...时,C ++模板参数推导失败,并显示错误“候选模板被忽略” ...为什么?

来自分类Dev

当参数包含std :: function ...时,C ++模板参数推导失败,并显示错误“候选模板被忽略” ...为什么?

来自分类Dev

为什么std :: aligned_union需要最小大小作为模板参数?

来自分类Dev

为什么std :: function不接受推导类型作为其模板参数?

来自分类Dev

在std :: exchange中,为什么第二个模板参数默认?

来自分类Dev

用`std :: function`和先前推导出的模板参数替换失败-为什么?

来自分类Dev

为什么std :: string不是std :: vector的特化?

来自分类Dev

为什么我需要写“ std :: string”而不是“ std :: getline()”?

来自分类Dev

为什么要使用std :: forward?

来自分类Dev

为什么不总是使用std :: forward?

来自分类Dev

为什么std range算法返回rd参数而不是std :: ranges :: dangling而不是...好了,就可以了吗?

来自分类Dev

为什么不能将此参数用于std :: sort()的Compare?

来自分类Dev

给谓词参数时为什么不能传递“ std”前缀

Related 相关文章

  1. 1

    为什么std :: stack不使用模板template参数?

  2. 2

    为什么std :: copy_n采用模板参数而不是std :: size_t?

  3. 3

    为什么std :: forward无法自己推断模板参数?

  4. 4

    为什么std :: forward无法自己推断模板参数?

  5. 5

    为什么不能使用模板模板参数将std :: vector <MyType>传递给此函数?

  6. 6

    为什么`std :: sto` ...系列不是模板?

  7. 7

    为什么模板参数推导因std :: function回调的可变参数模板参数而失败?

  8. 8

    为什么void *作为模板参数可以用作函数参数而不是模板参数?

  9. 9

    为什么void *作为模板参数可以用作函数参数而不是模板参数?

  10. 10

    为什么`std :: pair`将`std :: tuple`作为ctor参数类型而不是`const std :: tuple&`?

  11. 11

    为什么必须为“”使用std :: string()才能满足模板参数?

  12. 12

    为什么不使用非类型模板参数实现std :: bind的占位符?

  13. 13

    为什么我不能使用std:cin作为参数

  14. 14

    为什么std :: function用作std :: not2的参数?

  15. 15

    为什么std :: queue不是线程安全的?

  16. 16

    为什么std :: declval不是constexpr?

  17. 17

    当参数包含std :: function ...时,C ++模板参数推导失败,并显示错误“候选模板被忽略” ...为什么?

  18. 18

    当参数包含std :: function ...时,C ++模板参数推导失败,并显示错误“候选模板被忽略” ...为什么?

  19. 19

    为什么std :: aligned_union需要最小大小作为模板参数?

  20. 20

    为什么std :: function不接受推导类型作为其模板参数?

  21. 21

    在std :: exchange中,为什么第二个模板参数默认?

  22. 22

    用`std :: function`和先前推导出的模板参数替换失败-为什么?

  23. 23

    为什么std :: string不是std :: vector的特化?

  24. 24

    为什么我需要写“ std :: string”而不是“ std :: getline()”?

  25. 25

    为什么要使用std :: forward?

  26. 26

    为什么不总是使用std :: forward?

  27. 27

    为什么std range算法返回rd参数而不是std :: ranges :: dangling而不是...好了,就可以了吗?

  28. 28

    为什么不能将此参数用于std :: sort()的Compare?

  29. 29

    给谓词参数时为什么不能传递“ std”前缀

热门标签

归档