| 12345678910111213141516171819202122232425 |
- #pragma once
- #include <memory>
- #include <jvalidate/forward.h>
- #include <jvalidate/status.h>
- namespace jvalidate::constraint {
- class ExtensionConstraint {
- public:
- struct Impl {
- virtual ~Impl() = default;
- virtual Status visit(extension::VisitorBase const &) const = 0;
- };
- public:
- template <typename T, typename... Args> static std::unique_ptr<Constraint> make(Args &&... args) {
- return std::make_unique<Constraint>(
- ExtensionConstraint{std::make_unique<T>(std::forward<Args>(args)...)});
- }
- public:
- std::unique_ptr<Impl> pimpl;
- };
- }
|