<div dir="ltr">I have a library that redefines forward_as_tuple in its namespace, along with some concrete types. This causes the problem with the following code:<div><br></div><div><a href="https://github.com/llvm/llvm-project/blob/master/libcxx/include/tuple#L1352">https://github.com/llvm/llvm-project/blob/master/libcxx/include/tuple#L1352</a><br></div><div><a href="https://github.com/llvm/llvm-project/blob/master/libcxx/include/tuple#L1367">https://github.com/llvm/llvm-project/blob/master/libcxx/include/tuple#L1367</a><br></div><div><br></div><div>Here, forward_as_tuple is being called unqualified, and ADL kicks in. ADL finds the definition of forward_as_tuple in the library that I am using, and I get ambiguity. </div><div><br></div><div>It definitely can be argued that the library I am using makes a dangerous choice by sticking concrete types into the same namespace as the template forward_as_tuple, but it does. My question is why libc++ calls forward_as_tuple unqualified rather than std::forward_as_tuple. Is this a bug, or is there a good reason for this?</div><div><br></div><div>Thanks,</div><div>Marcin</div></div>