dimanche 29 janvier 2017

templates - expected unqualified-id before numeric constant

I have code that looks like this:

template <int Rows>
struct A {
    std::array<int, Rows*Rows> array;


    template <int X, int Y>
    int at(int x, int y) const {
        return array[X*x + Y*y];
    }
};


template <int Dim>
struct B {
    void dosomething(A<Dim> value) {
        auto x = value.at<0, 0>(0, 0);
    }
};

The compiler (gcc 6.3 and clang 3.9) complain about the line

auto x = value.at<0, 0>(0, 0);

with error: expected unqualified-id before numeric constant

I guess I have some ambiguity here, but I can't figure out how to resolve it. Also it is important that A and B are templates otherwise the error doesn't show up.

Some help and hints about what the compiler is really complaining about and how it could be fixed would be great.

Aucun commentaire:

Enregistrer un commentaire