Functions called tuple and array

I think I tracked down the source of this problem. Somewhere as part of ".L foo+"ing a macro, ACLiC actually ends up inserting “using namespace std;” into the thing that gets compiled. This I found by grepping all my code for “using” and I noticed that the auto-generated dict.h from using “makecint” on some of my files contained “using namespace std;”. For my simple tuple.C example, I guess ACLiC also somewhere #includes so that the real clang++ compiler gets confused between my tuple function and std::tuple?

A global namespace inclusion in a header file is considered a SERIOUS code smell, why does ACliC do this? I found this post [url]ACLiC problem that claims it’s unavoidable, but surely something can be done to warn the user? Something better than the horrible mess of compiler warnings that I showed above? Can we generate a list of forbidden names from the std::namespace when ROOT is compiled/first run that the user can read?

Will this all go away with ROOT6?

Jean-François