Remove `operator[](std::ptrdiff_t) const` from boost::shared_ptr

Starting Boost 1.53.0 a new feature was introduced into
boost::shared_ptr: a support for a pointer to a dynamically
allocated array.

This is achieved by adding `operator[](std::ptrdiff_t) const` to
all instances on boost::shared_ptr. There are two levels of protection
here:

- Runtime checks that the pointer you hold is an array
- A trait returns `void` return type for non-array types in
  `boost::shared_ptr`

The second point creates compilation errors in Reflex dictionaries.
Reflex needs to generate a call for `operator[]`, but by doing that we
get `operator[]` with return type `void` and with `return` statement.

Think about it as a static assert.

Simply put Reflex does not know, that it should not call `operator[]` on
not array `boost::shared_ptr`.

reco::parser::ExpressionPtr : boost::shared_ptr<reco::parser::ExpressionBase>
reco::parser::SelectorPtr   : boost::shared_ptr<reco::parser::SelectorBase>

These are not pointers to dynamically allocated arrays.

The patch disables `operator[]` on them (will not be visible in
interpreter).

More details available in: https://github.com/cms-sw/cmsdist/issues/1167

Signed-off-by: David Abdurachmanov <David.Abdurachmanov@cern.ch>
Merge pull request #6289 from davidlt/disable-boost-shared_ptr-array-operator

Remove `operator[](std::ptrdiff_t) const` from boost::shared_ptr