Hàm constexpr có thể chứa nhãn không?

Nov 16 2020

Chương trình này :

constexpr void f() { x: ; }

được biên dịch bởi gcc, nhưng clang nói:

error: statement not allowed in constexpr function

Vậy mã này có hợp lệ không?

Trả lời

7 cigien Nov 16 2020 at 11:35

Như đã chỉ ra trong một bình luận của Nathan Pierson , Clang là đúng, và mã này không được định hình tốt. Theo bản nháp làm việc hiện tại (bao gồm C ++ 20), dcl.constexpr # 3 cho biết:

Định nghĩa của hàm constexpr phải đáp ứng các yêu cầu sau:

...

chức năng của nó không được bao bọc

...

một nhãn định danh,

...

...