#pragma once
#include <Windows.h>
#include <functional>
template<std::function<typename ...Args>>
class dvTFiber {
private:
std::function<Args... args> Run = nullptr;
};大家好,长期潜伏的人,虽然这是我的第一个问题,因为我在互联网上找不到我正在寻找的东西。
我相信从代码本身我想要做的事情是显而易见的。fiber类的模板,可以接受任何类型的std::function<>指针作为类型。我正在尝试做一些类似于淘气狗在2015年全球数据中心演示中关于使用光纤来保持多核、多线程系统在没有任何停机时间的情况下工作的事情,以及id在末日永恒上使用他们的idTech 7引擎所做的事情。虽然我自己并不期望这样的结果,但我只是想看看我是否能做到。
无论如何,我对模板编程不是很熟悉。我是通过C语言学习编程的,但仍然没有完全掌握c++14,更不用说使用模板进行c++20和元编程了。见鬼,我还在使用libClang在构建管道中处理反射。
很抱歉给我上了历史课。长话短说,我想知道我正在尝试的是不是A)可能,B)容易可能,我只是想太多了,或者C)某种组合,我只是一个笨蛋
任何帮助,即使只是叫我笨蛋,都将是非常有帮助的,并在此之前感谢你。
发布于 2021-04-06 03:49:43
模板语法错误。如果要向私有函数类型发送许多参数,则必须直接发送它们,而不是通过std::function类型:
template<typename... Args>
struct dvTFiber {
// ...
private:
std::function<void(Args...)> Run; // by default is a null function.
};并像这样使用它:
auto fiber = dvTFiber<int, bool, float>{};现在,如果您还想允许不同的返回类型,您也可以将其作为第一个参数发送:
template<typename R, typename... Args>
struct dvTFiber {
private:
std::function<R(Args...)> Run;
};另外,
可以接受任何类型的std::function<>指针作为类型的纤程类的模板
这段代码中没有指向std::function<>的指针,只有普通的std::function。
https://stackoverflow.com/questions/66958681
复制相似问题