I use the "class of ..." construction for serialization/deserialization as well and it works under Delphi and FPC. For FPC I used both DELPHI and OBJFPC modes. In OBJFPC DirectX 8 headers which I use won't compile, but my own code compiles. With DELPHI mode it compiles and runs.
"class of ..." is working only for classes not for objects.
Actually there are some strange bugs in my application compiled with FPC but serialization/deserialization works well.