There are two methods of abstract_message_box_t that are not marked as noexcept: id() and type().
I don't remember why they do not have noexcept specifier and don't see any reasons why they are not noexcept. It seems to me that they can be used in noexcept contexts.
And it's hard to imagine an implementation of such methods that throws.
May be they have to be marked as noexcept?
If it has a sense then such a change can be made in v.5.9 to avoid breaking compatibility of abstract_message_box_t interface in 5.8-branch.