在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個元組元素,所以它看起來應該是可能的。你試過了嗎?它不起作用嗎? – Colin
我試着做一些像'unsigned int n; CIN >> N; my_function(std :: get(my_tuple))''但是我得到了'沒有匹配的函數來調用 –