C++ PATCH for more N4268 bits, constant evaluation of all non-type args

From: Jason Merrill <jason at redhat dot com>

To: gcc-patches List <gcc-patches at gcc dot gnu dot org>

Date: Fri, 9 Jun 2017 17:39:00 -0700

Subject: C++ PATCH for more N4268 bits, constant evaluation of all non-type args

Authentication-results: sourceware.org; auth=none

My earlier patch for N4268 didn't implement the notion of converted
constant-expression, and as a result we weren't properly using
constexpr user-defined conversions to produce values for template
arguments.
Always performing these conversions led to some issues with
convert_nontype_argument getting confused by the trees built up to
express the conversion, especially for pointers to members, where we
would immediately decay the PTRMEM_CST to an INTEGER_CST even when
converting to the same type. Changing that ended up requiring a
variety of other changes in pointer-to-member handling.
Tested x86_64-pc-linux-gnu, applying to trunk.