Maybe I was overcomplicating things, maybe its as simple as this: A function name is just the name of a function. If used in a call context like in funcName(...) it refers to a function call, if used as ::funcName it refers to a callable function reference. I tried to explain this to myself here: