为什么 std::get<T> for 'variant' 是一个全局函数?
Why is std::get<T> for `variant` a global function?
谁能告诉我为什么 C++17 的std::get<T>
是全局函数而不是 variant<...>
的成员函数?
如果get<T>()
是成员函数模板,则在依赖上下文中调用 template
关键字时将需要该关键字。例如:
template <typename Variant>
void f(Variant const& v) {
auto x0 = v.template get<T>(); // if it were a member
auto x1 = get<T>(v); // using a non-member function
}
即使没有using
声明或指令,也会找到get()
,因为std::variant<...>
和get()
都是在命名空间std
中声明的。因此,似乎没有充分的理由将其作为成员函数,因为全局函数更易于使用。
相关文章:
- C++:实现一个全局常量,其值由用户给出
- 我真的可以使用 Type 的每个声明创建一个全局变量吗?
- 在QT GUI中创建一个全局对象
- 为什么 std::get<T> for 'variant' 是一个全局函数?
- 通过其他文件中的另一个全局变量使用类的全局实例
- 定义一个全局变量并在那里初始化它本身可以吗?
- C++ pthread,两个线程读取一个全局变量
- 我应该为永远不变的值做一个全局常量变量吗,比如足球运动员的计数
- 如何打印地图?让它成为一个全局变量?C++
- 我如何定义一个全局函数来检查边界
- 如何定义一个全局可见操作符
- 将声明一个全局变量时,做递归内存效率和速度更快
- 创建一个全局ofstream变量
- 如何在c++中定义一个全局函数
- 如何为flashwindowwex创建一个全局32/64位钩子
- 我可以用函数调用的结果初始化一个全局变量吗
- 在 c++ 中声明一个全局范围变量 const
- 你能在.hpp文件中重载一个全局操作符吗?
- 在Python中公开一个C++全局变量
- 向静态库中添加一个全局变量以进行版本控制