On Thursday, 3 May 2018 at 02:48:10 UTC, jmh530 wrote:
On Thursday, 3 May 2018 at 00:52:58 UTC, Meta wrote:
[snip]

It's not a big per se. It's a consequence of the declaration expanding to the real template function form (I can't type it all out as I'm on my phone), thus the inner `val` from the function shadows the one from the template.


That makes sense. Before creating the example, I would have assumed that when you instantiate it as foo!1, then the `val=1` would flow through to the inner foo function.

template foo(int val)
{
    int foo(int val)
    {
        return val;
    }
}

If you want that, you might be able to do `int val = val` on the inner function, though I'm not sure that'll work.

Reply via email to