1 // { dg-do compile { target c++17 } }
4 // Check that empty expansions and required failures.
8 #define MAKE_FN(name, op) \
9 template<typename... Ts> \
10 constexpr auto name (Ts... ts) { return (... op ts); } // { dg-error "empty" }
45 MAKE_FN (comma, COMMA);
46 MAKE_FN (dot_star, .*);
47 MAKE_FN (arrow_star, ->*);
50 static_assert(land() == true, "");
51 static_assert(lor() == false, "");
52 comma(); // No value to theck
54 // These are all errors, but the error is emitted at the point
55 // of instantiation (line 10).
56 add(); // { dg-message "required from here" }
57 mul(); // { dg-message "required from here" }
58 bor(); // { dg-message "required from here" }
59 band(); // { dg-message "required from here" }
60 sub(); // { dg-message "required from here" }
61 div(); // { dg-message "required from here" }
62 mod(); // { dg-message "required from here" }
63 lsh(); // { dg-message "required from here" }
64 rsh(); // { dg-message "required from here" }
65 assign(); // { dg-message "required from here" }
66 addi(); // { dg-message "required from here" }
67 subi(); // { dg-message "required from here" }
68 muli(); // { dg-message "required from here" }
69 divi(); // { dg-message "required from here" }
70 modi(); // { dg-message "required from here" }
71 bxor(); // { dg-message "required from here" }
72 bxori(); // { dg-message "required from here" }
73 bori(); // { dg-message "required from here" }
74 bandi(); // { dg-message "required from here" }
75 lshi(); // { dg-message "required from here" }
76 rshi(); // { dg-message "required from here" }
77 eq(); // { dg-message "required from here" }
78 ne(); // { dg-message "required from here" }
79 lt(); // { dg-message "required from here" }
80 gt(); // { dg-message "required from here" }
81 le(); // { dg-message "required from here" }
82 ge(); // { dg-message "required from here" }
83 dot_star(); // { dg-message "required from here" }
84 arrow_star(); // { dg-message "required from here" }