I am trying to find out why this piece of code doesn't trigger ADL:
#include <stdio.h>
namespace N {
    struct S {
        int z = 10;
    };
    int increase(int x) {return x + 10;}
}
int f(N::S x) {
    return increase(10) + 5;
}
int main() {
    N::S s;
    printf("%d", f(s));
    return 0;
}
compiling with clang gives me:
error: use of undeclared identifier 'increase'; did you mean 'N::increase'?
My understanding is: because the argument has type of N::S, the namespace of N is looked up so that int increase(int) will be located? No? Any suggestion is welcome!
Aucun commentaire:
Enregistrer un commentaire