http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29131

Marc Glisse <marc.glisse at normalesup dot org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |marc.glisse at normalesup
                   |                            |dot org

--- Comment #24 from Marc Glisse <marc.glisse at normalesup dot org> 2012-04-26 
19:14:45 UTC ---
(In reply to comment #22)
> I am sorry if my knowledge on this issue is limited, but if I put t() and f()
> in namespace glm (re. the code in comment #20), should this compile? (That is
> what you comment #19 implies). Actually it does not.

So you are talking about this? Notice how vec3 isn't actually in glm.
Interactions between namespaces and name lookup can be difficult.

namespace glm {
  namespace detail {
    struct vec3{};
  }
  using detail::vec3;
}

template<class T>
int t(T i)
{
  return f (i);
}

namespace glm {
  int
    f (glm::vec3 i)
    {
      return 0;
    }
}

int main()
{
  glm::vec3 b;
  return t(b);
}

Reply via email to