标题很难用单词表达,但这是我试图在不可编译的代码中实现的:
template<template <typename> class Container>
Container<int> foo() {
return Container<int>{1,2,3};
}
int main() {
auto bar = foo<std::vector>();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
基本上我想要一个模板函数,它可以从传递给它的类型和先前已知的类型(在这种情况下int)中"组合"它的返回类型.在这种情况下,我想要一个函数,它在调用者指定的容器内返回任意数据类型.(任意地,我不是指在编译时是随机的或未确定的,而是调用者没有关于数据类型将是什么的"输入",这是在函数本身内部确定的).
这种类型的东西甚至可以通过使用std + 1z的clang或gcc来实现吗?我错过了一些非常明显的东西吗 是否存在跨越数百个角色的"1线"解决方案,我不知道?
我在这里看到了类似事物的各种例子,但它们似乎都假设函数将指针或引用作为参数并填充这些容器.
c++ templates metaprogramming template-meta-programming c++17