Version 4.6, March 30, 2013

This version adds several more C++11 features:

1)  The "constexpr" feature, which allows functions and constructors
    that return constant values for constant arguments, and variables
    whose initializers must be reduced to constants at compile time.
    See N2235, and the additions in N3078, N3268, and N3277.  For
    example, in the following all the constructors, conversion
    functions, and operator functions are folded at compile time
    to produce a constant value for a3.

      struct A {
        int i;
        constexpr A(int p) : i(p) {}
        constexpr operator int() { return i; }
      };
      constexpr A operator+(A a1, A a2) {
        return A{(int)a1 + (int)a2};
      }
      int main() {
        constexpr A a1{1};
        constexpr A a2{2};
        constexpr A a3 = a1 + a2;
        if (a3.i != 3) return 1;
      }

2)  Nonstatic data member initializers (NSDMIs), which are
    initializers on nonstatic data member declarations within the
    class.  See N2756.  For example:

      struct A {
        int i = 1;
        A() {}  // i gets initial value of 1
        A(int p) : i(p) {} // i is initialized to p; NSDMI is not used
      };

3)  Unrestricted unions.  In traditional C++, unions cannot contain
    fields with nontrivial construction, assignment, or destruction
    semantics.  C++11, however, does permit such fields but if a
    corresponding constructor, destructor, or copy assignment operator
    is generated, it is implicitly "deleted".  For example:

      struct S { S(); };
      union U {
        S s;  // Previously an error; now accepted in C++11 mode.
        int i;
      };
      U u;  // Error: The generated default constructor of U is deleted.

    Furthermore, when unrestricted unions are enabled, unions can
    also contain static data members.

We've also added these GNU compatibility features:

1)  Binary literals.  For example:

      int i = 0b01;

2)  The __bases and __direct_bases operators.  These are needed to
    support the GNU tr2/type_traits header.

With those and other changes, we now support the GNU headers up to
g++ version 4.7 (the <tuple> header uses delegating constructors,
which we don't support yet, but we do compile it if the uses aren't
instantiated).

As usual, we have fixed many other bugs, added many minor features, and
continued work on GNU and Microsoft compatibility.  See the Changes_4.6
file for full details (about 3,900 lines).
