# Function name conflict: ADL / function merging?

**URL:** <https://discourse.julialang.org/t/function-name-conflict-adl-function-merging/10335>\
**Category:** Internals & Design\
**Tags:** proposal, namespaces\
**Created:** [April 14, 2018, 5:16pm UTC](https://discourse.julialang.org/t/function-name-conflict-adl-function-merging/10335 "2018-04-14T17:16:17Z")\
**Posts on this page:** 1\
**Showing post:** 204

<div class="post-metadata">

**Author:** ![jeff.bezanson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jeff.bezanson/32/48_2.png) [@jeff.bezanson](https://discourse.julialang.org/u/jeff.bezanson)\
**Post date:** [April 20, 2018, 9:16pm UTC](https://discourse.julialang.org/t/function-name-conflict-adl-function-merging/10335/204 "2018-04-20T21:16:06Z")

</div>

> [@jlperla](#):
>
> Is that really different from C++'s templated functions and template specializations though? C++ makes ADL work for these.
> 
> Exactly.

I was told that `XModule.f(x::Any)` (or `f<T>(T x)` ?) would not be callable, but `XModule.f(x::X)` would be. A method becoming applicable as a result of its signature narrowing is definitely very different from the subtyping-based model of applicability.

---

_[View the full topic](https://discourse.julialang.org/t/function-name-conflict-adl-function-merging/10335)._
