There's a lot of shared_(ptr|array) where scoped_(ptr|array) would be more appropriate. E.g. "boost::shared_array <decor_quad_t> quad" - scoped_array would be more appropriate.
"throw std::exception ();" - this doesn't give the client code much chance of identifying the problem.
There's inconsistent use of "Decoration::Ptr (new ...)" and "Decoration::Ptr = Decoration::create (...)" - have you come across make_shared<>()? (Part of boost and C++11)
There's a lot of shared_(ptr|array) where scoped_(ptr|array) would be more appropriate. E.g. "boost: :shared_ array <decor_quad_t> quad" - scoped_array would be more appropriate.
"throw std::exception ();" - this doesn't give the client code much chance of identifying the problem.
There's inconsistent use of "Decoration::Ptr (new ...)" and "Decoration::Ptr = Decoration::create (...)" - have you come across make_shared<>()? (Part of boost and C++11)