20 lines
455 B
C++
20 lines
455 B
C++
#pragma once
|
|
#include "foundation.hpp"
|
|
namespace library = std;
|
|
using std::copyable;
|
|
namespace demo {
|
|
template<class T>
|
|
concept Sized = requires(const T value) {
|
|
{ value.size() } -> library::integral;
|
|
requires library::same_as<decltype(value.size()), unsigned>;
|
|
};
|
|
|
|
template<class T>
|
|
concept Flexible = (Arithmetic<T> || Sized<T>) && requires(T value) {
|
|
requires copyable<T>;
|
|
};
|
|
|
|
template<class T>
|
|
concept Outer = Flexible<T> || Addable<T>;
|
|
}
|