C++ 指向返回变量类型引用的函数的指针元组
不要让问题标题吓跑你!我相信这只是一个语法问题 我有这门课C++ 指向返回变量类型引用的函数的指针元组,c++,variadic-templates,c++14,stdtuple,C++,Variadic Templates,C++14,Stdtuple,不要让问题标题吓跑你!我相信这只是一个语法问题 我有这门课 template<typename ... Types> class test_class{ public: template<typename T> T &get(){return std::get<T>(m_values);} template<typename T> void set(T &&a
template<typename ... Types>
class test_class{
public:
template<typename T>
T &get(){return std::get<T>(m_values);}
template<typename T>
void set(T &&t){std::get<T>(m_values) = t;}
// scary part
std::pair<std::tuple</* trouble */ Types&(*)()...>, std::tuple<void(*)(Types)...>> &getters_setters(){
static std::pair<std::tuple<Types&&(*)()...>, std::tuple<void(*)(Types)...>> ret{
std::make_tuple(get<Types>...),
std::make_tuple(set<Types>...)
};
return ret;
}
private:
std::tuple<Types...> m_values;
};
模板
班级考试{
公众:
模板
T&get(){return std::get(m_值);}
模板
空集(T&&T){std::get(m_值)=T;}
//可怕的部分
std::pair&getters\u setters(){
静态std::pair-ret{
std::make_tuple(get…),
std::生成元组(集合…)
};
返回ret;
}
私人:
std::元组m_值;
};
并且想知道模板参数包扩展的正确语法,这样我就可以得到
T&get()
函数指针的元组。您的省略号放在正确的位置,您只需要确保类型确实匹配
Types&(test_class::*)()…
<代码>&测试类::获取…set
采用右值引用:void(测试类::*)(类型和).
std::pair<std::tuple<Types&(test_class::*)()...>,
std::tuple<void(test_class::*)(Types&&)...>>&
getters_setters()
{
static std::pair<std::tuple<Types&(test_class::*)()...>,
std::tuple<void(test_class::*)(Types&&)...>> ret{
std::make_tuple(&test_class::get<Types>...),
std::make_tuple(&test_class::set<Types>...)
};
return ret;
}
std::pair&
getters_setters()
{
静态std::pair-ret{
std::make_tuple(&test_class::get…),
std::make_tuple(&test_class::set…)
};
返回ret;
}
Oh,右值引用部分是一个输入法,创建类的实例并调用方法;对我来说失败了:/Hmm,我的代码肯定还是有问题。我只是从你的链接上复制粘贴代码,这比试图找到错误要容易得多。