P0036R0: Unary Folds and Empty Parameter Packs
* pt.c (expand_empty_fold): Remove special cases for *,+,&,|. From-SVN: r234068
This commit is contained in:
parent
d259b234a3
commit
1e546b68c1
|
@ -1,3 +1,8 @@
|
|||
2016-03-08 Jason Merrill <jason@redhat.com>
|
||||
|
||||
P0036R0: Unary Folds and Empty Parameter Packs
|
||||
* pt.c (expand_empty_fold): Remove special cases for *,+,&,|.
|
||||
|
||||
2016-03-08 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/70135
|
||||
|
|
12
gcc/cp/pt.c
12
gcc/cp/pt.c
|
@ -10629,10 +10629,6 @@ gen_elem_of_pack_expansion_instantiation (tree pattern,
|
|||
sequence, the value of the expression is as follows; the program is
|
||||
ill-formed if the operator is not listed in this table.
|
||||
|
||||
* 1
|
||||
+ 0
|
||||
& -1
|
||||
| 0
|
||||
&& true
|
||||
|| false
|
||||
, void() */
|
||||
|
@ -10644,14 +10640,6 @@ expand_empty_fold (tree t, tsubst_flags_t complain)
|
|||
if (!FOLD_EXPR_MODIFY_P (t))
|
||||
switch (code)
|
||||
{
|
||||
case MULT_EXPR:
|
||||
return integer_one_node;
|
||||
case PLUS_EXPR:
|
||||
return integer_zero_node;
|
||||
case BIT_AND_EXPR:
|
||||
return integer_minus_one_node;
|
||||
case BIT_IOR_EXPR:
|
||||
return integer_zero_node;
|
||||
case TRUTH_ANDIF_EXPR:
|
||||
return boolean_true_node;
|
||||
case TRUTH_ORIF_EXPR:
|
||||
|
|
|
@ -22,11 +22,11 @@ MAKE_FNS (add, +);
|
|||
MAKE_FNS (sub, -);
|
||||
|
||||
int main() {
|
||||
assert(unary_left_add() == 0);
|
||||
// assert(unary_left_add() == 0);
|
||||
assert(unary_left_add(1) == 1);
|
||||
assert(unary_left_add(1, 2, 3) == 6);
|
||||
|
||||
assert(unary_right_add() == 0);
|
||||
// assert(unary_right_add() == 0);
|
||||
assert(unary_right_add(1) == 1);
|
||||
assert(unary_right_add(1, 2, 3) == 6);
|
||||
|
||||
|
|
|
@ -47,16 +47,16 @@ MAKE_FN (dot_star, .*);
|
|||
MAKE_FN (arrow_star, ->*);
|
||||
|
||||
int main() {
|
||||
static_assert(add() == int(), "");
|
||||
static_assert(mul() == 1, "");
|
||||
static_assert(bor() == int(), "");
|
||||
static_assert(band() == -1, "");
|
||||
static_assert(land() == true, "");
|
||||
static_assert(lor() == false, "");
|
||||
comma(); // No value to theck
|
||||
|
||||
// These are all errors, but the error is emitted at the point
|
||||
// of instantiation (line 10).
|
||||
add(); // { dg-message "required from here" }
|
||||
mul(); // { dg-message "required from here" }
|
||||
bor(); // { dg-message "required from here" }
|
||||
band(); // { dg-message "required from here" }
|
||||
sub(); // { dg-message "required from here" }
|
||||
div(); // { dg-message "required from here" }
|
||||
mod(); // { dg-message "required from here" }
|
||||
|
|
Loading…
Reference in New Issue