Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/cpp1y/constexpr-incr2.C @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | |
children |
line wrap: on
line source
// PR c++/91705 - constexpr evaluation rejects ++/-- on floats. // { dg-do compile { target c++14 } } #define SA(X) static_assert((X),#X) template <class T> constexpr T fn1(T t) { return ++t; } constexpr float fn2(float t) { return ++t; } template <class T> constexpr T fn3(T t) { return --t; } constexpr float fn4(float t) { return --t; } template <class T> constexpr T fn5(T t) { return t++; } constexpr float fn6(float t) { return t++; } template <class T> constexpr T fn7(T t) { return t--; } constexpr float fn8(float t) { return t--; } constexpr double r1 = fn1(2.0f); SA(r1 == 3); constexpr double r2 = fn2(2.0f); SA(r2 == 3); constexpr double r3 = fn3(2.0f); SA(r3 == 1); constexpr double r4 = fn4(2.0f); SA(r4 == 1); constexpr double r5 = fn5(2.0f); SA(r5 == 2); constexpr double r6 = fn6(2.0f); SA(r6 == 2); constexpr double r7 = fn7(2.0f); SA(r7 == 2); constexpr double r8 = fn8(2.0f); SA(r8 == 2);