- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这只是一个教育问题,否则可以通过利用 range-v3 等工具完全避免。
无论如何,请考虑以下示例,其中将可变数量的容器传递给返回迭代器元组的函数:
#include <tuple>
#include <iostream>
#include <vector>
template <typename ...T>
auto begin(T&... containers) { return std::tuple( begin(containers)... ); }
int main() {
std::vector<int> a{1,2,3};
std::vector<long> b{1000,2000,3000};
auto bg = begin(a,b);
(void) bg;
return 0;
}
template <auto F, typename ...T>
auto make(T&... containers) { return std::tuple( F(containers)... ); }
// called as this:
auto bg = make<[](auto& c){return std::begin(c);}> (a,b);
auto bg = make<std::begin>(a, b); // or
auto bg = make(std::begin, a, b);
最佳答案
but I have not been able to make these beauties work...
std::begin
et al 不是函数。它们是函数模板。这意味着它们代表的不是单一功能,而是它们的整个家族。当您有常规重载时也是如此。当一个函数名意味着多个函数时,它就不能被传递。重载集不是我们可以像类型或函数引用一样传递的有形事物。这真的不是一个可调用的。
#define LIFT(...) [](auto&& ...args) \
noexcpet(noexcpet(__VA_ARGS__(std::forward<decltype(args)>(args)...))) \
-> decltype(auto) { \
return __VA_ARGS__(std::forward<decltype(args)>(args)...); \
}
auto bg = make(LIFT(std::begin), a, b);
关于c++ - 我可以在不创建语法怪物的情况下转发(类型)通用重载函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58438120/
我走! 农卡! 乡非! 男痴@ 有倪 再贱 罗二。 左耳L 鱼七° 闲人 只要你! 怪物 - 久伴! 兀自
我即将编写一个将条形码转换为游戏元素(例如怪物、元素、技能等)的游戏。很像旧的“Barcode Battler”游戏。 不幸的是,我在数学方面不是很有天赋。我需要的是一些提示,我可以如何开发一种算法来
冒着听起来像新手程序员的风险,我要问一个关于“空指针”怪兽的普遍存在的问题。这是一段代码: public class pixel { private String type = "empty"
我正在接手一个庞大的现有项目。现在我正在寻找一些错误。但是当到处都是 symfony 缓存时,很难理解外国代码做了什么。 Quit the server with CONTROL-C. RUN
我们当前的自动化构建由 1 个主盒和 4 个 core-2-duo 披萨盒(大约 2.5Ghz)组成,每个盒有 3 GB 内存,全部运行 Ubuntu Linux。 (使用bamboo) 我被要求重新
我有一个它正在选择的怪物列表。 def monsters(): whatMonster = random.randint(0, 25) monster = pickMonste
我是一名优秀的程序员,十分优秀!