Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/cpp1z/fold3.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// { dg-do compile { target c++17 } } // { dg-options "" } // Check that empty expansions and required failures. #define COMMA , #define MAKE_FN(name, op) \ template<typename... Ts> \ constexpr auto name (Ts... ts) { return (... op ts); } // { dg-error "empty" } MAKE_FN (add, +); MAKE_FN (sub, -); MAKE_FN (mul, *); MAKE_FN (div, /); MAKE_FN (mod, %); MAKE_FN (bxor, ^); MAKE_FN (bor, |); MAKE_FN (band, &); MAKE_FN (lsh, <<); MAKE_FN (rsh, >>); MAKE_FN (assign, =); MAKE_FN (addi, +=); MAKE_FN (subi, -=); MAKE_FN (muli, *=); MAKE_FN (divi, /=); MAKE_FN (modi, %=); MAKE_FN (bxori, ^=); MAKE_FN (bori, |=); MAKE_FN (bandi, &=); MAKE_FN (lshi, <<=); MAKE_FN (rshi, >>=); MAKE_FN (eq, ==); MAKE_FN (ne, !=); MAKE_FN (lt, <); MAKE_FN (gt, >); MAKE_FN (le, <); MAKE_FN (ge, >); MAKE_FN (land, &&); MAKE_FN (lor, ||); MAKE_FN (comma, COMMA); MAKE_FN (dot_star, .*); MAKE_FN (arrow_star, ->*); int main() { 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" } lsh(); // { dg-message "required from here" } rsh(); // { dg-message "required from here" } assign(); // { dg-message "required from here" } addi(); // { dg-message "required from here" } subi(); // { dg-message "required from here" } muli(); // { dg-message "required from here" } divi(); // { dg-message "required from here" } modi(); // { dg-message "required from here" } bxor(); // { dg-message "required from here" } bxori(); // { dg-message "required from here" } bori(); // { dg-message "required from here" } bandi(); // { dg-message "required from here" } lshi(); // { dg-message "required from here" } rshi(); // { dg-message "required from here" } eq(); // { dg-message "required from here" } ne(); // { dg-message "required from here" } lt(); // { dg-message "required from here" } gt(); // { dg-message "required from here" } le(); // { dg-message "required from here" } ge(); // { dg-message "required from here" } dot_star(); // { dg-message "required from here" } arrow_star(); // { dg-message "required from here" } }