320x100
template<typename T>
std::enable_if_t<std::is_same_v<T, const char*> || std::is_same_v<T, const char* const>, void>
AddField(const char* _key, const T& _value)
{
Key(_key);
String(_value);
}
template<typename T>
std::enable_if_t<std::is_same_v<T, std::string>, void>
AddField(const char* _key, const T& _value)
{
Key(_key);
String(_value.c_str());
}
template<typename T>
std::enable_if_t<std::is_same_v<T, bool>, void>
AddField(const char* _key, const T& _value)
{
Key(_key);
Bool(_value);
}
template<typename T>
std::enable_if_t<std::is_same_v<T, int8_t> || std::is_same_v<T, int16_t> || std::is_same_v<T, int32_t>, void>
AddField(const char* _key, const T& _value)
{
Key(_key);
Int(_value);
}
template<typename T>
std::enable_if_t<std::is_same_v<T, uint8_t> || std::is_same_v<T, uint16_t> || std::is_same_v<T, uint32_t>, void>
AddField(const char* _key, const T& _value)
{
Key(_key);
Uint(_value);
}
template<typename T>
std::enable_if_t<std::is_same_v<T, int64_t>, void>
AddField(const char* _key, const T& _value)
{
Key(_key);
Int64(_value);
}
template<typename T>
std::enable_if_t<std::is_same_v<T, uint64_t>, void>
AddField(const char* _key, const T& _value)
{
Key(_key);
Uint64(_value);
}
template<typename T>
std::enable_if_t<std::is_floating_point_v<T>, void>
AddField(const char* _key, const T& _value)
{
Key(_key);
Double(_value);
}
void AddFields() {}
template<typename Key, typename Value, typename... Rest>
void AddFields(Key&& _key, const Value& _value, const Rest&... _rest)
{
AddField(_key, _value);
AddFields(_rest...);
}
320x100
'프로그래밍 > C,C++' 카테고리의 다른 글
Release 프로그램의 비정상 종료시 덤프를 무조건 남기기 (0) | 2024.06.20 |
---|---|
UTF-8 문자열 관리 (0) | 2023.10.12 |
[RapidJson] 가변 파라미터 함수로 json 값 추가하기 (0) | 2023.05.08 |
확인할 수 없는 외부 기호 (0) | 2021.12.30 |
memmove_s 함수 (0) | 2021.12.27 |