| 294 | // --------------------------------------------------------------------------------------------------- |
| 295 | |
| 296 | void test_optional_int_constexpr_monads() |
| 297 | { |
| 298 | constexpr dlib::optional<int> o1{42}; |
| 299 | |
| 300 | { |
| 301 | struct callback |
| 302 | { |
| 303 | constexpr auto operator()(int i) {return dlib::optional<long>{i}; }; |
| 304 | }; |
| 305 | |
| 306 | constexpr auto res = o1.and_then(callback{}); |
| 307 | |
| 308 | static_assert(std::is_same<std::decay_t<decltype(res)>, dlib::optional<long>>::value, "bad map"); |
| 309 | static_assert(*res == 42, "bad"); |
| 310 | DLIB_TEST(*res == 42); |
| 311 | } |
| 312 | } |
| 313 | |
| 314 | // --------------------------------------------------------------------------------------------------- |
| 315 | |