| 83 | // Detect if type has insert(key, value) method (for maps) |
| 84 | template<typename T> |
| 85 | class has_insert_key_value { |
| 86 | template<typename C> static auto test(int) -> decltype(fl::declval<C>().insert(0, fl::declval<fl::shared_ptr<int>>()), fl::true_type()); |
| 87 | template<typename> static fl::false_type test(...); |
| 88 | public: |
| 89 | static constexpr bool value = fl::is_same<decltype(test<T>(0)), fl::true_type>::value; |
| 90 | }; |
| 91 | |
| 92 | // Detect if type has operator[] for assignment |
| 93 | template<typename T> |