In a previous blog post, Daniel Lemire showed how you could define ‘an interface’ in C++ using concepts and stated that he did not take into account inheritance as a strategy. He does so here.
Defining Interfaces in C++: Concepts Versus Inheritance
by Daniel Lemire
From the article:
In a previous blog post, I showed how you could define ‘an interface’ in C++ using concepts. For example, I can specify that a type should have the methods has_next, next and reset:
template <typename T>
concept is_iterable = requires(T v) {
{ v.has_next() } -> std::convertible_to<bool>;
{ v.next() } -> std::same_as<uint32_t>;
{ v.reset() };
};

Add a Comment
Comments are closed.