>백엔드 개발 >C++ >C 17에서 상태 저장 메타 프로그래밍이 합법적입니까?

C 17에서 상태 저장 메타 프로그래밍이 합법적입니까?

DDD
DDD원래의
2024-11-18 21:54:03270검색

Is Stateful Metaprogramming Legal in C  17?

상태 저장 메타 프로그래밍의 미래는 불확실합니까?

메타 프로그래밍 영역에서는 상태 저장 메타 프로그래밍으로 알려진 흥미로운 constexpr 카운터 기술이 등장합니다. 이 복잡한 기술은 개발자들 사이에서 감탄과 불안을 불러일으켰습니다. 질문은 계속 남아 있습니다. C 17의 출현으로 적법성이 다시 검토되었습니까?

C 14의 상태 저장 메타 프로그래밍

제공된 코드 조각에서 알 수 있듯이 C 14는 친구 선언, ADL 및 constexpr을 활용하여 호출 전반에 걸쳐 상태를 유지하는 카운터를 만듭니다. 겉보기에 난해해 보이는 특성에도 불구하고 이 기술은 C 14에서 합법적입니다.

The Dark Cloud: CWG Issue 2118

그러나 이 방법은 C 표준에서 정밀 조사를 받았습니다. 특히 활성 이슈 CWG 이슈 2118을 통해 위원회는 이 기술의 모호함을 인식하고 잘못된 형식의 경계 설정을 옹호합니다.

C 17의 Silent Stance

CWG의 우려에도 불구하고 C 17은 이 문제를 명시적으로 다루지 않습니다. 이는 상태 저장 메타프로그래밍이 미래에 변경될 수 있다는 경고가 있음에도 불구하고 C 17에서 여전히 합법적임을 의미합니다.

소급적 의미

금지 메커니즘이 고안된 경우, 상태 저장 메타프로그래밍은 소급하여 형식이 잘못된 것으로 간주될 수 있습니다. 이렇게 하면 질문에 제시된 코드 조각이 유효하지 않게 되어 기존 코드베이스에 잠재적인 위험을 초래할 수 있습니다.

결론

상태 저장 메타프로그래밍의 미래는 여전히 불확실합니다. C 17에서는 여전히 합법적이지만, 이 기술에 대한 CWG의 불편함은 그 날이 얼마 남지 않았음을 암시합니다. 이 기술을 사용하는 개발자는 이러한 잠재적인 주의 사항을 인지하고 C 표준의 향후 업데이트를 모니터링하여 코드 무결성을 확인해야 합니다.

위 내용은 C 17에서 상태 저장 메타 프로그래밍이 합법적입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.