
Sebastian Redl wrote:
Interesting idea. Any particular reason why this inheritance is virtual? sealed_impl being a template should be rare to duplicate as a base, and having no data members or virtual functions, it should be irrelevant even if it was duplicated. On the other hand, you introduce the troubles that come with virtual inheritance.
Sebastian Redl
Dear Sebastian Redl, thank you for your interest. Template class "sealed" inherits "sealed_impl" by virtual to require all classes that will inherit from class "sealed" to call the constructor of "sealed_impl". All classes in the hierarchy are required to call "sealed_impl" constructor, but it is allowed only for two classes, the "sealed" (it was made just to keep code pretty) and that class who will inherit from "sealed". If you will try to inherit from class that already inherits "sealed", you will get error on compilation. It is impossible to implement this thing without virtual inheritance and friend class. I know that virtual inheritance may cause problems in generally, but I see no possible problems with this code. Any suggestions and other solutions are welcome! Thank you.