CTime は、__time64_t
. format を呼び出すと、次のようになります。
inline CString CTime::Format(_In_z_ LPCTSTR pFormat) const
{
if(pFormat == NULL)
{
return pFormat;
}
TCHAR szBuffer[maxTimeBufferSize];
struct tm ptmTemp;
if (_localtime64_s(&ptmTemp, &m_time) != 0)
{
AtlThrow(E_INVALIDARG);
}
if (!_tcsftime(szBuffer, maxTimeBufferSize, pFormat, &ptmTemp))
{
szBuffer[0] = '\0';
}
return szBuffer;
}
したがって、見たいシステム関数は です_tcsftime
。そして、これはドキュメンテーションがあまり正確ではないと私が思うところです。が失敗した場合_localtime64_s
、例外が発生するため、実際には 'null' 時間を に渡すことはできません_tcsftime
。_tcsftime
失敗した場合にのみ NULL を取得しますが、それは「null」時間が原因ではありません。
したがって、要するに、boost::optional
null を表すためにあなたが提案するようなものを使用してください。