cppreference.com에서 이해할 수없는 코드를 찾았습니다. 링크 : Type Alias . dependent template-id
내가 이해하지 못하는 이야기 입니다. 코드는 다음과 같습니다.
//When the result of specializing an alias template is a dependent template-id,
//subsequent substitutions apply to that template-id:
template<typename...>
using void_t = void;
template<typename T>
void_t<typename T::foo> f();
f<int>(); // error, int does not have a nested type foo
VS 2019에서 마우스를 가져 가면 void_t<<
이름 없음 이라고 표시됩니다.>...>
누구든지이 이름없는 typename이 어떻게 유용한 지 설명해 줄 수 있습니까?
전달 된 템플릿 매개 변수 template<typename...> using void_t = void;
에 void
관계없이 유형이 추론 된 표현식에 대해 설명하겠습니다 . 예,
template<typename...>
using void_t = void;
template <typename T>
void_t<T> fun1() {
std::cout << "fun1 called" << std::endl;
}
int main() {
fun1<int>(); //fun1 called
fun1<float>(); //fun1 called
}
동일하게 확장하려면 중첩 된 유형 template<typename T>void_t<typename T::foo> f();
만 허용 typename T
합니다 T::foo
. 예를 들면
template<typename...>
using void_t = void;
template<typename T>
void_t<typename T::foo> f() {}
struct bar
{
typedef int foo;
};
int main() {
f<bar>(); //Valid expression as bar::foo is nested type of bar
f<int>(); //Error because `int::foo`is not a nested type of `int`.
}
자세한 정보는 대체 실패는 오류가 아님을 참조하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다