function - 为什么c++11将get<>(tuple)定义为全局函数而不是tuple的成员?

标签 function c++11 get tuples member

似乎 std::get 只用在元组类上。为什么不把它做成标准库中元组的成员类,还有别的用法吗?

最佳答案

The reason get is a non-member function is that if this functionality had been provided as a member function, code where the type depended on a template parameter would have required using the template keyword.

source .

get 为非成员函数时的代码片段:

template<class T>
void foo ( tuple<T>& t ) {
    get<0>(t) = 10; // get is non-member function
}

还有一个如果get是元组的成员函数:

template<class T>
void foo ( tuple<T>& t ) {
    t. template get<0>() = 10; // ugly
}

您更喜欢哪个版本的get用法?对我来说,第一个更好。

关于function - 为什么c++11将get<>(tuple)定义为全局函数而不是tuple的成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52301517/

相关文章:

c - 当我尝试将函数的参数设置为默认时发生意外错误

php - mysqli 连接在函数内部不起作用?

javascript - 根据函数的初始化方式,ES6 导入的行为有所不同

javascript - 将 JavaScript 函数分配给提交按钮,该函数应有条件地执行

php - 如何将变量从数据库查询传递到 PHP 函数

c++ - Ratio<,> 是常量,但如果我想接受不同的比率作为参数怎么办?

C++ 为什么调用复制构造函数?

C++ 策略对象和构建器模式

spring - Spring Security中如何获取GET参数?

javascript - $.get 路由未在服务器端调用,并且未返回任何数据,服务器未进行控制台日志记录