cms-sw/cmssw — pull request #4500 by wmtan (2014-07-03 05:42:09+00:00)
Title: Don't hide C++11 constructs from ROOT 6

In CMSSW header files exposed to CINT in ROOT 5, C++11 constructs are must be hidden from CINT, Usually with preprocessor symbols (e.g __GCCXML__, _MAKECINT__). In ROOT 6, this hiding is not
necessary. Unfortunately, there is no consistency in the symbols used. Some are defined in ROOT 6,
some are not.
I have discovered one case, in TrackingRecHits.h, where the current use of such a preprocessor symbol
causes a run time JIT compilation error in ROOT6. This is because this class contains a data member
that is a std::shared_ptr, but due to conditional compilation, the JIT compiler sees it as a bare pointer.
This leads to a JIT compilation error because, while std::shared_ptr::element is defined, "element"
is not defined for a bare pointer. Th fix is to use a preprocessor symbol, __GCCXML__ that is defined only for ROOT 5, so that the JIT compilation sees the shared_ptr. For consistency. this change is made in two closely related packages.
This pull request is a no-op for ROOT 5, and is being requested for code commonality between the 7_2_X branch and the 7_2_ROOT6_X branch.