Bon*_*ero 9 c++ templates variadic-templates c++17
任何人都可以告诉我为什么std::get<T>C++ 17是一个全局函数而不是一个成员函数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
}
Run Code Online (Sandbox Code Playgroud)
即使没有using声明或指令,get()如果同时发现它们std::variant<...>并get()在命名空间中声明std.因此,似乎没有充分的理由使其成为成员函数,因为全局函数更容易使用.