http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58848

            Bug ID: 58848
           Summary: constexpr function allows throw
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mib.bugzilla at gmail dot com

Created attachment 31072
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=31072&action=edit
should get compilation error

A simple test case rejects throw inside constexpr function, but a more
complicated test case allows the throw.  Attaching 2 test cases

Bad:

 g++ constexp_error.cpp -std=c++0x
-bash-4.1$ ./a.out
fail, exception raised

Good:
 g++ constexp_ok.cpp -std=c++0x
constexp_ok.cpp: In function âint main()â:
constexp_ok.cpp:15:47:   in constexpr expansion of
âfum<DUMMY>::numSubEntities<int>(5)â
constexp_ok.cpp:8:73: error: expression â<throw-expression>â is not a
constant-expression
        throw std::out_of_range("a point has only subentities of codim=0");

gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/rdrive/ref/gcc/4.8.1/rhel60/efi2/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.8.1/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with:
/rusers/sys_cron/grab_gcc/downloads_rel/4.8.1/gcc-4.8.1/configure
--prefix=/rdrive/ref/gcc/4.8.1/rhel60/efi2
--enable-languages=c,c++,objc,fortran --disable-multilib --enable-bootstrap
--target=x86_64-unknown-linux-gnu --disable-bootstrap --enable-decimal-float
--with-gmp=/rusers/sys_cron/grab_gcc/downloads_rel/lib/efi2
--with-mpfr=/rusers/sys_cron/grab_gcc/downloads_rel/lib/efi2
--with-mpc=/rusers/sys_cron/grab_gcc/downloads_rel/lib/efi2
Thread model: posix
gcc version 4.8.1 (GCC)

Reply via email to