请注意以下std::get函数语法:

std::tuple <int, double, long &, const char *> bar(18, 6.5, 12, "Hello!");
cout << std::get<2>(bar); // Print the tuple’s third element.


我不熟悉这种语法...
这是使用模板语法传递参数吗?
如果是,请提供一个简单示例说明std::get的工作方式。

最佳答案

您可以像在其他参数中一样将东西作为模板参数中的参数传递,您可能熟悉像这样将类型作为参数传递:

template<typename T>
void f() {}


并调用以下函数:f<int>()

除了扩展为具体类型外,这是相同的概念。

例:

#include <iostream>

template<size_t N>
void f() {
    std::cout << N << '\n';
}

int main() {
    f<10>();
    f<11>();
    f<100>();
}


输出:

10
11
100


因此,您传递的是指定类型的编译时值,而不是传递类型。

关于c++ - 对参数使用模板语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18244658/

10-11 22:07
查看更多