DocWire SDK
DocWire SDK: Award-winning modern data processing in C++20. SourceForge Community Choice & Microsoft support. AI-driven processing. Supports nearly 100 data formats, including email boxes and OCR. Boost efficiency in text extraction, web data extraction, data mining, document analysis. Offline processing possible for security and confidentiality
invocation_concepts.h
1 /*********************************************************************************************************************************************/
2 /* DocWire SDK: Award-winning modern data processing in C++20. SourceForge Community Choice & Microsoft support. AI-driven processing. */
3 /* Supports nearly 100 data formats, including email boxes and OCR. Boost efficiency in text extraction, web data extraction, data mining, */
4 /* document analysis. Offline processing possible for security and confidentiality */
5 /* */
6 /* Copyright (c) SILVERCODERS Ltd, http://silvercoders.com */
7 /* Project homepage: https://github.com/docwire/docwire */
8 /* */
9 /* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-DocWire-Commercial */
10 /*********************************************************************************************************************************************/
11 
12 #ifndef DOCWIRE_INVOCATION_CONCEPTS_H
13 #define DOCWIRE_INVOCATION_CONCEPTS_H
14 
15 #include "invocation_traits.h"
16 
24 {
25 
34 template <typename T>
35 concept invocable = invocation_traits::is_invocable_v<T>;
36 
45 template <typename T>
46 concept not_invocable = not invocable<T>;
47 
56 template <typename T>
57 concept pushable = requires(T&& t) {
58  { t.push_back(std::declval<typename std::remove_reference_t<T>::value_type>()) };
59 };
60 
61 } // namespace docwire::invocation_concepts
62 
63 #endif //DOCWIRE_INVOCATION_CONCEPTS_H
Provides concepts for working with invocable objects and pushable containers.
concept not_invocable
Checks if a type is not invocable.
concept pushable
Checks if a type is pushable.
concept invocable
Checks if a type is invocable.
requires(!string_method_equipped< T >) struct stringifier< T >
Specialization for types that are streamable to std::ostream.