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());
运行这段代码后出现编译错误。这可以解决吗?如果没有,我怎么能重写?
答案 0 :(得分:4)
我不知道你真正想要实现的目标,但看起来你想要返回一个可能不同类型的值的元组。有std::tuple
代表这一点:
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());
答案 1 :(得分:1)
您需要提供更多信息,但在某些情况下请查看initializer_list。
#include <initializer_list>
std::initializer_list<int> foo() {
return {1,2,3,4,5};
}
如果你需要某种类型的独立性,你可以实现一些Variants结构,如:QVariant,boost.Any,boost.Variant
但要注意initializer_list的生命周期。