【发布时间】:2015-01-06 00:03:31
【问题描述】:
在 C++ 中,我有一个包含一些元素的元组:
std::tuple <int, char> my_tuple(3, 'q');
还有一些模板函数可以完美地处理整数和字符:
template <class T> void my_function(T);
现在,假设在运行时我想在我的元组的一个元素上运行 my_function(但我不知道是哪个)。我注意到无法执行以下操作:
unsigned int n;
// Give a value to n
my_function(std::get <n> (my_tuple));
但是,原则上我需要的应该与以下内容相同:
unsigned int n;
// Give a value to n
switch(n)
{
case 0:
my_function(std::get <0> (my_tuple));
break;
case 1:
my_function(std::get <1> (my_tuple));
break;
default:
// Do nothing or throw an exception
}
所以在我看来这应该是可行的.. 是吗?
【问题讨论】:
-
std::get 返回第 n 个类型的元组元素,无论它是什么,它都应该被带到模板函数中,所以它看起来应该是可能的。你试过了吗?不行吗?
-
我尝试做类似
unsigned int n; cin>>n; my_function(std::get <n> (my_tuple))的操作,但我得到`没有匹配的函数可供调用