Table of Contents
One of the major reasons why FORTRAN can chew through numbers so well
      is that it is defined to be free of pointer aliasing, an assumption
      that C89 is not allowed to make, and neither is C++98.  C99 adds a new
      keyword, restrict, to apply to individual pointers.  The
      C++ solution is contained in the library rather than the language
      (although many vendors can be expected to add this to their compilers
      as an extension).
   
That library solution is a set of two classes, five template classes,
      and "a whole bunch" of functions.  The classes are required
      to be free of pointer aliasing, so compilers can optimize the
      daylights out of them the same way that they have been for FORTRAN.
      They are collectively called valarray, although strictly
      speaking this is only one of the five template classes, and they are
      designed to be familiar to people who have worked with the BLAS
      libraries before.