나는 다음과 같은 템플릿 기능을 가지고 :템플릿 클래스를 템플릿 함수 전문화에 대한 인수로 사용할 수 있습니까?
예를 들어, 다른 템플릿 함수에 사용 차례에template <class T>
inline T ParseValueFromJson(const JSONValue& jsonValue);
:
template <class T>
bool TryGetValueFromJson(
const JSONValue& jsonValue,
const String& name,
T& variable)
{
if (!jsonValue.Contains(name))
{
return false;
}
variable = ParseValueFromJson<T>(jsonValue[name]);
return true;
}
가 지금은 다른 유형의 번호 ParseValueFromJson을 전문으로하는 원하고, 그 중 하나가 템플릿 클래스 (Vector)입니다. 그러나 일반적인 전문성을 사용하여 벡터의 형식 매개 변수가 정의되지 않은 것입니다 의미 :
template <>
inline Vector<T> ParseValueFromJson<Vector<T>>(const JSONValue& jsonValue)
게다가 나는 T가 ParseValueFromJson의 버전을 입력 사용하는 것 때문에 내가 T의 유형을 필요 함수 구현하는, 개별 항목을 구문 분석합니다. 따라서이 가능하다, 또는 (I 별도의 TryGetContainerFromJson에 만족해야합니까
template <typename T>
inline Vector<T> ParseValueFromJson<Vector<T>>(const JSONValue& jsonValue)
:
내가 전문화에 템플릿 T를 사용하는 경우 물론
, 그것은 모호한 호출 결과 다른 기능입니다 또는 유사한) 함수를 두 번째 템플릿 매개 변수로 템플릿 컬렉션 형식을 걸리는?
감사합니다. @ Smeeheey의 해결책에 기대고 있었지만, 아마 재검토하게 될 것입니다. – FlintZA