小编Sal*_*gat的帖子

T - > std :: vector <T>的模板专业化

我有一个模板类方法

template<class T>
T pop<T>();
Run Code Online (Sandbox Code Playgroud)

现在我想做一个模板专业化,如下所示,

template<class T>
std::vector<T> pop<T>();
Run Code Online (Sandbox Code Playgroud)

我可以做到以下没问题,

template<>
std::vector<int> classname::pop<std::vector<int>>();
Run Code Online (Sandbox Code Playgroud)

但我仍然需要将类型作为模板参数.我该如何做到这一点?


编辑:感谢Piotr我最终使用标签调度.下面是我最终做的代码,

// The public method that is accessed by class.push<std::vector<int>>(12);
template<class T>
void push(T data) {
    push(tag<T>(), data);
}

// The private method that calls the actual vector push for vector types
template<class T>
void push(tag<std::vector<T>>, std::vector<T> const& data_vector) {
    push_vector(data_vector);
}

// The actual implementation
template<class T>
void push_vector(std::vector<T> const& data_vector) {
// Actual implementation in here
}
Run Code Online (Sandbox Code Playgroud)

c++ templates

6
推荐指数
2
解决办法
1441
查看次数

是否使用T const&或T &&

我很好奇,一般来说,你是否要使用T &&(通用引用)而不是经典的T const&(l值引用)来模拟以C++ 11开头的模板化函数参数.我特别好奇的是,如果你想要处理r值引用,你如何绕过这个事实,你被迫失去const; 有没有解决的办法?

c++ rvalue c++11 universal-reference

6
推荐指数
1
解决办法
706
查看次数

如何动态生成函数?

我希望能够获取一个字符串(使用正确的Dart语法)并将其转换为可调用的dart函数.有没有办法做到这一点?

例如,我会收到字符串,

void test() { print("testing!"); }
Run Code Online (Sandbox Code Playgroud)

然后将其转换为可调用的函数.我想这样做的原因是能够从其他服务器下载dart文件并调用它们的功能.

dart

5
推荐指数
1
解决办法
212
查看次数

使用 IndexedDB 在 Isolate 之间共享内存

我现在正在使用 Isolates,想知道使用 IndexedDB 在 Isolates 之间共享数据是否是一种很好的通信方式?具体来说,我希望一个 Isolate 能够写入它,然后告诉其他 Isolate 他们可以只读它。这些数据一旦写入就被认为是不变的,而且相当大。我想这样做的主要原因是因为我不想将 6MB 的地图发送到 3 个不同的隔离区,因为它对程序来说有点密集。

web-worker dart dart-isolates

5
推荐指数
1
解决办法
645
查看次数