Home > Backend Development > C++ > body text

Is Stateful Metaprogramming Legal in C 17?

DDD
Release: 2024-11-18 21:54:03
Original
203 people have browsed it

Is Stateful Metaprogramming Legal in C  17?

Is Stateful Metaprogramming's Future Uncertain?

In the realm of metaprogramming, arises the intriguing technique of constexpr counters, known as stateful metaprogramming. This intricate technique has sparked both admiration and unease among developers. The question lingers: with the advent of C 17, has its legality been revisited?

Stateful Metaprogramming in C 14

As the provided code snippet demonstrates, stateful metaprogramming in C 14 leverages friend declarations, ADL, and constexpr to create a counter that maintains its state across invocations. Despite its seemingly arcane nature, this technique is legal under C 14.

The Dark Cloud: CWG Issue 2118

However, this practice has drawn scrutiny from the C standards committee, specifically through active issue CWG issue 2118. The committee recognizes the obscurity of this technique and advocates for its demarcation as ill-formed.

C 17's Silent Stance

Despite the CWG's concern, C 17 does not explicitly address this issue. This implies that stateful metaprogramming remains legal in C 17, albeit with a warning that its fate may be altered in the future.

Retroactive Implications

Should a prohibition mechanism be devised, it is possible that stateful metaprogramming may be retroactively deemed ill-formed. This would render the code snippet presented in the question invalid, posing potential risks for existing codebases.

Conclusion

The future of stateful metaprogramming remains uncertain. While it is still legal in C 17, the CWG's discomfort with the technique suggests that its days may be numbered. Developers who employ this technique should be aware of this potential caveat and monitor future updates in the C standard to ensure their code's integrity.

The above is the detailed content of Is Stateful Metaprogramming Legal in C 17?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template