Hello list,
Apologies for the cross-post, this originally went to the boost-users list a day or so ago but it got no responses, and then I also realized it was actually more appropriate here.
Suppose I have a cross-platform agent that communicates with a server.
Agent from platform X sends a message to the server which contains a
date/time. Server sends a message to another agent running platform Y
with the same date/time. In practice X/Y are always either
windows/linux or linux/windows. The server always tells the agent
which platform's native format the time is represented in, so there
should be no problem. Ideally I'd like to write the following code:
ptime time;
if (msg.is_from_windows())
{
time = from_ftime<ptime>(msg.time());
}
else
{
time = from_time_t(msg.time());
}
But
this doesn't work because from_ftime<> is not defined on linux.
If from_ftime<> is already templated on the FILETIME type, is
there any reason it needs to be #ifdef'd out on non-windows platforms?
I mean, a FILETIME is really just a uint64, can't the templated function also just operate on a boost::uint64_t?
Zach