const void 란 무엇입니까?
std::is_void
상태에 대한 설명 :
T가 void, const void, volatile void 또는 const volatile void 형식 인 경우 true와 동일한 멤버 상수 값을 제공합니다 .
그런 다음 무엇을 할 수있는 const void
, 또는 volatile void
?
이 답변 은 const void
반환 유형이 유효하지 않을 것이라고 말합니다 (하지만 VC ++ 2015에서 컴파일됩니다)
const void foo() { }
표준에 따라 const void
유효하지 않은 경우 (VC가 잘못됨)-다음은 무엇 const void
입니까?
const void
포인터를 형성 할 수있는 유형입니다. 일반적인 void 포인터와 비슷하지만 변환은 다르게 작동합니다. 예를 들어, a const int*
는으로 암시 적으로 변환 될 수 없지만 암시 적 void*
으로 const void*
. 당신이있는 경우 마찬가지로, const void*
당신은 할 수 없습니다 static_cast
그것이로 int*
,하지만 당신은 할 수 static_cast
그것으로 const int*
.
const int i = 10;
void* vp = &i; // error
const void* cvp = &i; // ok
auto ip = static_cast<int*>(cvp); // error
auto cip = static_cast<const int*>(cvp); // ok
로 void
, const void
빈 공간 유형입니다. 그러나 const void
A는 반환 타입의이 const
(! 법적이기는하지만) 의미는, 때문에 [EXPR] / 6 :
prvalue가 처음에 " cv
T
" 유형을 갖는 경우 , 여기서T
cv-unqualified 비 클래스, 비 배열 유형 인 경우 표현식의 유형은T
추가 분석 전에 조정됩니다 .
그러나 이것은 유효한 유형 자체이며 예를 들어 C 표준 라이브러리 함수 에서 발생합니다. 여기서 인수 포인터의 const 정확성을 보장하는 데 사용됩니다 : int const*
으로 변환 할 수 void*
없지만 void const*
.
유형은 템플릿의 결과 일 수 있습니다. 템플릿은 명시 수 const T
및 인스턴스화 할 수 T
로 void
.
연결된 대답은 비 템플릿 유형의 특수한 경우와 관련하여 오해되거나 제한적이며 의미const void
가 없을 수 있지만 유효한 코드 입니다.
참고 URL : https://stackoverflow.com/questions/37881240/what-is-const-void
'code' 카테고리의 다른 글
Scala 특성에서 val 또는 def를 언제 사용합니까? (0) | 2020.09.19 |
---|---|
root 사용자를 제외하고 'test'@ 'localhost'사용자 (암호 사용 : YES)에 대한 액세스가 거부되었습니다. (0) | 2020.09.19 |
스레드는 Python에서 어떻게 작동하며 일반적인 Python- 스레딩 관련 함정은 무엇입니까? (0) | 2020.09.19 |
linq의 let 키워드가 into 키워드보다 낫습니까? (0) | 2020.09.19 |
루비 1.8.6 (each_char)에서 문자열의 각 문자에 대해 반복 (0) | 2020.09.19 |