
Here is an emulation -- I use my own unqualified call instead of STL (and AFAIK g++ STL makes lots of unqualified calls):
----------- a.cpp --------------------------------
#include <boost/mpl/find.hpp> #include <boost/mpl/vector.hpp>
namespace X { template<class T> void find(const T&) {} template<class T> struct row {}; void foo() { find(row<boost::mpl::vector0<> >()); } }
int main() { X::foo(); return 0; } ----------------------------------
The result is:
C:\ark\gcctest>g++ -I c:\boost\boost_1_32_0 a.cpp c:/boost/boost_1_32_0/boost/mpl/find.hpp: In function `void X::foo()': c:/boost/boost_1_32_0/boost/mpl/find.hpp:29: error: `template<class Sequence, class T> struct boost::mpl::find' is not a function, a.cpp:8: error: conflict with `template<class T> void X::find(const T&)' a.cpp:13: error: in call to `find'
Surely that's a gcc bug (anyone reported this?), there is no argument to find that is in the mpl namespace, an X::row<boost::mpl::vector0<> > doesn't count! John.