I noticed that get<0>(t) fails to be resolved to std::get<0>(t) if its argument's type depends on a template parameter:
template <typename T>
void foo(T) {
std::tuple<T> tup{0};
get<0>(tup) = 1; // error: 'get' was not declared in this scope; did you mean 'std::get'?
}
This works fine if foo is not a template (i.e. if tup is declared as std::tuple<int>) or with using std::get;. Shouldn't it also work in a function template where ADL is often extra useful?
Looks like a compiler error on gcc up to and including 10.2. Subsequent versions fix this.