/** * Case insensitive std::string comparison */ bool stdStringIsEqualCI(const std::string &s1, const std::string &s2) { std::string ns1(s1); std::string ns2(s2); std::transform(ns1.begin(), ns1.end(), ns1.begin(), tolower); std::transform(ns2.begin(), ns2.end(), ns2.begin(), tolower); return ns1 == ns2; }
int main() { { std::chrono::nanoseconds ns1(15); std::chrono::nanoseconds ns2(5); assert(ns1 / ns2 == 3); } { std::chrono::microseconds us1(15); std::chrono::nanoseconds ns2(5); assert(us1 / ns2 == 3000); } { std::chrono::duration<int, std::ratio<2, 3> > s1(30); std::chrono::duration<int, std::ratio<3, 5> > s2(5); assert(s1 / s2 == 6); } { std::chrono::duration<int, std::ratio<2, 3> > s1(30); std::chrono::duration<double, std::ratio<3, 5> > s2(5); assert(s1 / s2 == 20./3); } #ifndef _LIBCPP_HAS_NO_CONSTEXPR { constexpr std::chrono::nanoseconds ns1(15); constexpr std::chrono::nanoseconds ns2(5); static_assert(ns1 / ns2 == 3, ""); } { constexpr std::chrono::microseconds us1(15); constexpr std::chrono::nanoseconds ns2(5); static_assert(us1 / ns2 == 3000, ""); } { constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(30); constexpr std::chrono::duration<int, std::ratio<3, 5> > s2(5); static_assert(s1 / s2 == 6, ""); } { constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(30); constexpr std::chrono::duration<double, std::ratio<3, 5> > s2(5); static_assert(s1 / s2 == 20./3, ""); } #endif }