@@ -192,17 +192,28 @@ namespace math {
192192 return IsArithmeticId;
193193 }
194194
195- bool Has (const ::std::any& id) const override {
196- IMPLEMENT
197- return varIds.find (::std::any_cast<T>(id)) != varIds.end ();
195+ bool Has (const std::any& id) const override {
196+ try {
197+ return varIds.find (std::any_cast<T>(id)) != varIds.end ();
198+ } catch (const std::bad_any_cast&) {
199+ // Handle the error, e.g., log it or return a default value
200+ // For now, we'll return false to indicate the id was not found
201+ return false ;
202+ }
198203 }
199-
200- size_t Hash (const :: std::any& id) const override {
201- return std::hash<T>()(:: std::any_cast<T>(id));
204+
205+ size_t Hash (const std::any& id) const override {
206+ return std::hash<T>()(std::any_cast<T>(id));
202207 }
203-
204- bool CompareIdsLess (const ::std::any& a, const ::std::any& b) const override {
205- return ::std::any_cast<T>(a) < ::std::any_cast<T>(b);
208+
209+ bool CompareIdsLess (const std::any& a, const std::any& b) const override {
210+ try {
211+ return std::any_cast<T>(a) < std::any_cast<T>(b);
212+ } catch (const std::bad_any_cast&) {
213+ // Handle the error, e.g., log it or return a default value
214+ // For now, we'll return false to indicate the comparison failed
215+ return false ;
216+ }
206217 }
207218
208219 bool CompareIdsEqual (const ::std::any& a, const ::std::any& b) const override {
0 commit comments