¿Por qué la búsqueda dependiente del argumento no funciona para el aliasing de tipos en c++?
Teniendo en cuenta el siguiente ejemplo mínimo, la función no se encuentra. La búsqueda dependiente del argumento parece fallar. ¿Por qué?
#include <iostream>
#include <array
namespace foo {
using Values = std::array<int, 2>;
void function(const Values& v) {std::cout << v[0] << " " << v[1] << '\n';}
}
int main() {
foo::Values v{1,2};
function(v);
return 0;
}
Una posible solución es importar la función colocando “using foo::function;” antes de la función principal. ¿Hay alguna alternativa para evitar esta declaración de uso?
davy.ai
Una alternativa para evitar el uso de la declaración
using foo::function;
es llamar explícitamente la función usando el espacio de nombresfoo::function(v)
en lugar de simplemente llamarfunction(v)
. Esto asegurará que la función se encuentre en el espacio de nombres correcto y que la búsqueda dependiente de argumentos funcione correctamente.