Uma função constexpr pode conter um rótulo?

Nov 16 2020

Este programa :

constexpr void f() { x: ; }

é compilado pelo gcc, mas clang diz:

error: statement not allowed in constexpr function

Então, este código é válido?

Respostas

7 cigien Nov 16 2020 at 11:35

Conforme apontado em um comentário de Nathan Pierson , Clang está correto e o código está malformado. De acordo com o rascunho de trabalho atual (que inclui C ++ 20), dcl.constexpr # 3 diz:

A definição de uma função constexpr deve satisfazer os seguintes requisitos:

...

seu corpo de função não deve incluir

...

uma etiqueta identificadora,

...

...