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