유형이 shared_ptr인지 여부를 찾는 데 templatized 방법을 사용하고 싶습니다.이 유형을 기반으로 함수의 새로운 특수화를 원합니다. t.value가 shared_ptr의 경우 예 주요 기능은컴파일 타임에 유형이 shared_ptr인지 감지하는 방법
,
template <class T> inline
void CEREAL_LOAD_FUNCTION_NAME(RelaxedJSONInputArchive & ar, NameValuePair<T> & t)
{
std::cout << " CEREAL_LOAD_FUNCTION_NAME NameValuePair 1 " << std::endl;
ar.setNextName(t.name);
ar(t.value);
}
는 내가 다른 기능의 전문화를 갖고 싶어. 나는 아래
template <class T> inline
typename std::enable_if<is_pointer<T>::value, void>::type
CEREAL_LOAD_FUNCTION_NAME(RelaxedJSONInputArchive & ar, NameValuePair<T> & t)
{
std::cout << " CEREAL_LOAD_FUNCTION_NAME NameValuePair 2 " << std::endl;
ar.setNextName(t.name);
ar(t.value);
}
을 시도하지만 작동하지 않습니다. 이것들은 C++ 11 시리얼 라이브러리의 일부입니다. 어느 것을 사용자 정의하려고합니다.
'NameValuePair'는't.value'이 무엇을 알려주는 멤버 유형이 있습니까? – TartanLlama
NameValuePair가 여기에 정의됩니다. https://uscilab.github.io/cereal/assets/doxygen/helpers_8hpp_source.html .it에는 유형 값 구성원이 있습니다. –
"직접적인"과부하가 작동해야합니다. http://coliru.stacked-crooked.com/a/db3eae53e609bcfc – sp2danny