템플릿 유형의 크기에 따라 구현 (-> 전문화)이 달라지는 템플릿 기능을 제공하고 싶습니다.sizeof 유형에 따른 템플릿 전문
이 (생략 타입 변환)과 비슷한,하지만없는 경우/ELSEIF :
template<class T>
T byteswap(T & swapIt)
{
if(sizeof(T) == 2)
{
return _byteswap_ushort (swapIt);
}
else if(sizeof(T) == 4)
{
return _byteswap_ulong(swapIt);
}
else if(sizeof(T) == 8)
{
return _byteswap_uint64(swapIt);
}
throw std::exception();
}
내 목표에 도달하기 위해 많은 도로가 알고 있지만 내가 시도 이후에 대한 SFINAE
및 type traits
내가 '배우 특히 컴파일 타임에 이러한 기술을 사용하여 선택할 전문 분야와 어떤 호출이 인정되지 않는지에 관심이 있습니다.
아마도 내가 인정해야
, 나는 지금 붙어있어, 내가 어떤 도움이나 조언
좋은 답변이지만 'ByteswapImpl'의 기본 구현을 만들지는 않습니다. 그렇게하면 필요한 전문화가 존재하지 않으면 컴파일 오류가 발생합니다. – Job
그리고이 함수는 정적 일 수 있으므로 (boost :: numeric_cast' 및'boost :: numeric_conververt'와 비슷한) 객체를 생성 할 필요가 없습니다. – Philipp
필자는 기능 템플릿 * 부분 * 전문화 만 지원되지 않는다는 인상하에있었습니다 ... 제가 틀렸습니까? – Job