123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- #ifndef CERES_INTERNAL_CASTS_H_
- #define CERES_INTERNAL_CASTS_H_
- #include <cassert>
- namespace ceres {
- template <class T>
- struct identity_ {
- using type = T;
- };
- template <typename To>
- inline To implicit_cast(typename identity_<To>::type to) {
- return to;
- }
- template <typename To, typename From>
- inline To implicit_cast(typename identity_<From>::type const& f) {
- return f;
- }
- template <typename To, typename From>
- inline To down_cast(From* f) {
-
-
-
-
-
- if (false) {
- implicit_cast<From*, To>(nullptr);
- }
-
- assert(f == nullptr || dynamic_cast<To>(f) != nullptr);
- return static_cast<To>(f);
- }
- }
- #endif
|