[Error] C2338 static_assert faildd

연두비두밥·2024년 2월 28일
post-thumbnail
심각도 코드	설명	프로젝트	파일	줄	
비표시 오류(Suppression) 상태	세부 정보
오류	C2338	static_assert failed: 
'The C++ Standard forbids containers 
of const elements because allocator<const T> is ill-formed.'

위와 같은 에러가 발생

원인은 싱글톤 객체를 상수로 만들었고 이 내부에 vector를 선언하였음.

	std::vector<const int> temp;

위와 같은 경우에 문제가 발생한다.
찾아보니 C++ 표준에서는 'const'요소를 가진 컨테이너를 사용하는 것을 금지하고 있다. 그 이유는 'std::allocator' 클래스 템플릿이 'const T' 형식에 대한 인스턴스화를 지원하지 않기 때문이다.

실제로 벡터같은 경우도 데이터가 계속 추가되기 때문에 (중간에 삽입도 되고) const로 타입을 정의하는 것은 안된다.

profile
꾸준하고 싶은 사람

0개의 댓글