
I'll be posting a more complete review later on, but I thought I'd post a few preliminary questions early. First, there tends to be a create and object member function of a lot of objects in the library. This forced Ion to create partially constructed objects with the constructor, but it allows the use of return values instead of exceptions for error handling. I personally do not like partially constructed objects, and I do not mind exceptions that are thrown if there's a serious problem detected. I'm curious what the rationale was for that decision. Do the create/open functions fail frequently in typical use cases? Second, there isn't as much type safety as there could be in a lot of these classes. For example, shared_message_queue does not have a template parameter to determine what is stored in the queue. Instead, its send and receive member functions take void*'s. Is there a good reason for this? I suppose another process could use the same shared_message_queue with another type, but I'd really like to see some type safety within the same process. -Fred