C++ 如何编写返回可变模板的函数?这样做对吗? 模板 Args。。。func3()//此处出错->参数处语法错误。。。 { 返回(1,2,3,4,5,6); } 结构样本 { 模板 样本(Args…Args){} }; 样本s(func3());

C++ 如何编写返回可变模板的函数?这样做对吗? 模板 Args。。。func3()//此处出错->参数处语法错误。。。 { 返回(1,2,3,4,5,6); } 结构样本 { 模板 样本(Args…Args){} }; 样本s(func3());,c++,c++11,C++,C++11,我在运行这段代码时遇到编译错误。这能修好吗?如果没有,我如何重新编写 我不知道您实际想要实现什么,但看起来您想要返回可能不同类型的值的元组。有一个std::tuple,它正好表示: template <typename... Args> Args... func3() // error here -> Syntactical failure at Args... { return (1,2,3,4,5,6); } struct sample { templ

我在运行这段代码时遇到编译错误。这能修好吗?如果没有,我如何重新编写

我不知道您实际想要实现什么,但看起来您想要返回可能不同类型的值的元组。有一个
std::tuple
,它正好表示:

template <typename... Args>
Args... func3()   // error here -> Syntactical failure at Args...
{
    return (1,2,3,4,5,6);
}

struct sample
{
    template <typename... Args>
    sample(Args... args) {}
};

sample s(func3());
autofunc3()
{
返回std::make_tuple(1,2,3,4,5,6);
}
结构样本
{
模板
样本(std::tuple args){}
};
样本s(func3());

您需要提供更多信息,但在某些情况下,请查看

#包括
std::初始值设定项\u list foo(){
返回{1,2,3,4,5};
}
如果需要某种类型独立性,可以实现一些变体结构,如:


但是请注意的生存期。

您的意思是返回
std::tuple
?对于相同类型的元素序列,我更喜欢使用
std::vector
std::array
@Jarod42感谢您的提示。我有时忘记C++不从上下文推断返回类型。您可以通过将func3声明为return
auto
来修复它,因为编译器随后会从函数体推断返回类型。我不知道这是否是OP的想法。否则,您必须将类型作为模板参数传递,如您在回答中所示。
auto func3()
{
    return std::make_tuple(1,2,3,4,5,6);
}

struct sample
{
    template <typename... Args>
    sample(std::tuple<Args...>  args) {}
};

sample s(func3());
#include <initializer_list>

std::initializer_list<int> foo() {
    return {1,2,3,4,5};
}