https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77496
--- Comment #2 from Bernd Edlinger <bernd.edlinger at hotmail dot de> --- possible fix: --- a/gcc-7-20160904/gcc/cp/class.c 2016-08-26 17:10:57.000000000 +0200 +++ b/gcc-7-20160904/gcc/cp/class.c 2016-09-06 11:55:27.252138088 +0200 @@ -8262,6 +8262,11 @@ instantiate_type (tree lhstype, tree rhs return error_mark_node; } + /* If we instantiate a template, and it is a A ?: C expression + with omitted B. */ + if (TREE_CODE (rhs) == SAVE_EXPR) + rhs = TREE_OPERAND (rhs, 0); + /* There only a few kinds of expressions that may have a type dependent on overload resolution. */ gcc_assert (TREE_CODE (rhs) == ADDR_EXPR