#ifndef PROTOBUF_HPB_REQUIRES_H_ #define PROTOBUF_HPB_REQUIRES_H_ #include namespace hpb::internal { // Ports C++20 `requires` to C++17. // C++20 ideal: // if constexpr (requires { t.foo(); }) { ... } // Our C++17 stopgap solution: // if constexpr (Requires([](auto x) -> decltype(x.foo()) {})) { ... } template constexpr bool Requires(F) { return std::is_invocable_v; } } // namespace hpb::internal #endif // PROTOBUF_HPB_REQUIRES_H_