| 68 | |
| 69 | template <typename T> |
| 70 | T* GetMutable() { |
| 71 | if (!data_.empty()) { |
| 72 | try { |
| 73 | return paddle::any_cast<T*>(data_); |
| 74 | } catch (paddle::bad_any_cast&) { |
| 75 | PADDLE_THROW(common::errors::InvalidArgument( |
| 76 | "Invalid data type error, expected %s, actual %s.", |
| 77 | typeid(T).name(), |
| 78 | data_type_.name())); |
| 79 | } |
| 80 | } |
| 81 | T* created_data = new T(); |
| 82 | data_ = created_data; |
| 83 | data_deleter_ = [created_data]() { delete created_data; }; |
| 84 | data_type_ = std::type_index(typeid(T)); |
| 85 | return created_data; |
| 86 | } |
| 87 | |
| 88 | template <typename T> |
| 89 | bool IsType() const { |
no test coverage detected