Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Michaël Roynard
concepts-for-images
Commits
71e5c7e7
Commit
71e5c7e7
authored
Jul 19, 2018
by
Michaël Roynard
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' into 'master'
Finishing views See merge request
!8
parents
303534b3
e7d62d83
Pipeline
#3398
failed with stages
in 2 minutes and 40 seconds
Changes
21
Pipelines
6
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
539 additions
and
312 deletions
+539
-312
build-in-docker.ps1
build-in-docker.ps1
+45
-4
doc/sphinx/source/concepts/details/domain.rst
doc/sphinx/source/concepts/details/domain.rst
+9
-9
doc/sphinx/source/concepts/details/extension.rst
doc/sphinx/source/concepts/details/extension.rst
+2
-2
doc/sphinx/source/concepts/details/image.rst
doc/sphinx/source/concepts/details/image.rst
+56
-56
doc/sphinx/source/concepts/details/index.rst
doc/sphinx/source/concepts/details/index.rst
+3
-3
doc/sphinx/source/concepts/details/neighborhood.rst
doc/sphinx/source/concepts/details/neighborhood.rst
+2
-2
doc/sphinx/source/concepts/details/pixel.rst
doc/sphinx/source/concepts/details/pixel.rst
+17
-34
doc/sphinx/source/concepts/details/point.rst
doc/sphinx/source/concepts/details/point.rst
+4
-4
doc/sphinx/source/concepts/details/range.rst
doc/sphinx/source/concepts/details/range.rst
+16
-16
doc/sphinx/source/concepts/details/value.rst
doc/sphinx/source/concepts/details/value.rst
+8
-8
doc/sphinx/source/concepts/details/view.rst
doc/sphinx/source/concepts/details/view.rst
+60
-45
doc/sphinx/source/concepts/domain.rst
doc/sphinx/source/concepts/domain.rst
+4
-4
doc/sphinx/source/concepts/extension.rst
doc/sphinx/source/concepts/extension.rst
+2
-2
doc/sphinx/source/concepts/image.rst
doc/sphinx/source/concepts/image.rst
+12
-12
doc/sphinx/source/concepts/index.rst
doc/sphinx/source/concepts/index.rst
+4
-4
doc/sphinx/source/concepts/neighborhood.rst
doc/sphinx/source/concepts/neighborhood.rst
+2
-2
doc/sphinx/source/concepts/pixel.rst
doc/sphinx/source/concepts/pixel.rst
+16
-37
doc/sphinx/source/concepts/point.rst
doc/sphinx/source/concepts/point.rst
+4
-4
doc/sphinx/source/concepts/range.rst
doc/sphinx/source/concepts/range.rst
+42
-42
doc/sphinx/source/concepts/value.rst
doc/sphinx/source/concepts/value.rst
+9
-9
doc/sphinx/source/concepts/view.rst
doc/sphinx/source/concepts/view.rst
+222
-13
No files found.
build-in-docker.ps1
View file @
71e5c7e7
Param
(
[
String
]
$Compiler
=
"gcc"
,
[
String
]
$CmakeGenerator
=
"Ninja"
,
[
String
]
$BuildDirectory
=
"build-in-docker"
,
[
String
]
$SourceDirectory
=
".."
,
[
String
]
$Target
=
""
,
[
String
]
$Clean
=
"OFF"
[
String
]
$ConfigType
=
"Debug"
,
[
String
]
$Clean
=
"OFF"
,
[
String
]
$ConanUser
=
"dutiona"
,
[
String
]
$ConanRepoName
=
"dutiona-lrde"
,
[
String
]
$ConanRepoURL
=
"https://api.bintray.com/conan/dutiona/lrde"
,
[
String
]
$ConanAPIKey
=
"e2a665548385e82bf1ecbb4739d3582b83b8235f"
)
$DockerImageToolset
=
"mroynard/ubuntu-doctoolset:local"
$ConanProfile
=
"
$Compiler
-
$ConfigType
"
.
ToLower
()
Write-Host
"Compiler:
$Compiler
"
Write-Host
"CmakeGenerator:
$CmakeGenerator
"
Write-Host
"BuildDirectory:
$BuildDirectory
"
Write-Host
"SourceDirectory:
$SourceDirectory
"
Write-Host
"Target:
$Target
"
Write-Host
"ConfigType:
$ConfigType
"
Write-Host
"Clean:
$Clean
"
Write-Host
"ConanUser:
$ConanUser
"
Write-Host
"ConanRepoName:
$ConanRepoName
"
Write-Host
"ConanRepoURL:
$ConanRepoURL
"
Write-Host
"ConanAPIKey:
$ConanAPIKey
"
Write-Host
"ConanProfile:
$ConanProfile
"
Write-Host
"DockerImageToolset:
$DockerImageToolset
"
# compiler switch
If
(
$Compiler
-eq
"gcc"
)
{
$CC
=
"gcc"
$CXX
=
"g++"
}
Else
{
$CC
=
"clang"
$CXX
=
"clang++"
}
# starting container
$PwdPath
=
(
Get-Location
)
.
Path
$ContainerID
=
docker
run
-itd
--rm
--mount
type
=
bind
,
source
=
"
$PwdPath
"
,
target
=
/workspace
mroynard/ubuntu-doctoolset:local
Write-Host
"*** BUILDING BINARIES ***"
$ContainerID
=
docker
run
-itd
--privileged
--rm
--mount
type
=
bind
,
source
=
"
$PwdPath
"
,
target
=
/workspace
$DockerImageToolset
Write-Host
"Running in container
$ContainerID
"
Trap
{
docker
exec
$ContainerID
true
...
...
@@ -32,8 +61,20 @@ If ($Clean -eq "ON") {
}
# configure & make
docker
exec
--workdir
$Workdir
$ContainerID
sh
-c
"cmake -G
$CmakeGenerator
$SourceDirectory
"
docker
exec
--workdir
$Workdir
$ContainerID
sh
-c
"cmake --build . --target
$Target
"
$DockerCmd
=
@"
export CC=
$CC
&& \
export CXX=
$CXX
&& \
$CXX
--version && \
conan remote add
$ConanRepoName
$ConanRepoURL
&& \
conan user -p
$ConanAPIKey
-r
$ConanRepoName
$ConanUser
&& \
conan remote list && \
conan install .. --build missing -pr
$ConanProfile
&& \
cmake
$CmakeGenerator
-DWITH_TESTS=ON
$SourceDirectory
&&
cmake --build . --target
$Target
--config
$ConfigType
&& \
ctest -C
$ConfigType
--output-on-failure --schedule-random --verbose
"@
docker
exec
-w
$Workdir
$ContainerID
sh
-c
"
$DockerCmd
"
# stopping container
Write-Host
"Stopping container
$ContainerID
"
...
...
doc/sphinx/source/concepts/details/domain.rst
View file @
71e5c7e7
Domain concepts
===============
Domain concepts
(details)
===============
==========
.. contents:: Table of Contents
:local:
...
...
@@ -59,7 +59,7 @@ Domain
.. code:: cpp
template<typename D, Dom = remove_cvref<D>>
concept Domain =
requires
Regular<Dom> &&
concept Domain = Regular<Dom> &&
requires {
typename Dom::point_type;
...
...
@@ -67,14 +67,14 @@ Domain
typename Dom::codomain_type;
} &&
requires
Point<Dom::point_type> &&
requires
BidirectionalRange<Dom::const_point_range> &&
requires
Value<Dom::codomain_type> &&
Point<Dom::point_type> &&
BidirectionalRange<Dom::const_point_range> &&
Value<Dom::codomain_type> &&
requires
Same<const Dom::point_type, Dom::const_point_range::value_type> &&
Same<const Dom::point_type, Dom::const_point_range::value_type> &&
requires False<
is_const_v<Dom::codomain_type> &&
requires FaLse<
is_reference_v<Dom::codomain_type> &&
!
is_const_v<Dom::codomain_type> &&
!
is_reference_v<Dom::codomain_type> &&
requires(const Dom cdom, Dom::point_type p) {
{ cdom.has(p) } -> bool;
...
...
doc/sphinx/source/concepts/details/extension.rst
View file @
71e5c7e7
Extension concepts
==================
\ No newline at end of file
Extension concepts (details)
============================
\ No newline at end of file
doc/sphinx/source/concepts/details/image.rst
View file @
71e5c7e7
Image concepts
==============
Image concepts
(details)
==============
==========
.. contents:: Table of Contents
:local:
...
...
@@ -72,25 +72,25 @@ Image
typename Ima::const_value_range;
} &&
requires
Pixel<Ima::pixel_type> &&
requires
Point<Ima::point_type> &&
requires
Value<Ima::value_type> &&
requires
Domain<Ima::domain_type> &&
requires
Index<Ima::index_type> &&
requires
SignedIntegral<Ima::difference_type> &&
requires
ForwardRange<Ima::const_pixel_range> &&
requires
ForwardRange<Ima::const_value_range> &&
requires
Same<Ima::difference_type, decltype(Ima::index_type() - Ima::index_type())> &&
requires
Same<Ima::point_type, Ima::pixel_type::point_type> &&
requires
Same<Ima::value_type, Ima::pixel_type::value_type> &&
requires
Same<Ima::const_reference, const Ima::pixel_type::reference> &&
requires
Same<Ima::const_pixel_type, const Ima::pixel_type> &&
requires
Same<Ima::const_pixel_type, Ima::const_pixel_range::value_type> &&
requires
Same<Ima::const_reference, Ima::const_value_range::value_type> &&
requires False<
is_const_v<Ima::value_type> &&
requires FaLse<
is_reference_v<Ima::value_type> &&
Pixel<Ima::pixel_type> &&
Point<Ima::point_type> &&
Value<Ima::value_type> &&
Domain<Ima::domain_type> &&
Index<Ima::index_type> &&
SignedIntegral<Ima::difference_type> &&
ForwardRange<Ima::const_pixel_range> &&
ForwardRange<Ima::const_value_range> &&
Same<Ima::difference_type, decltype(Ima::index_type() - Ima::index_type())> &&
Same<Ima::point_type, Ima::pixel_type::point_type> &&
Same<Ima::value_type, Ima::pixel_type::value_type> &&
Same<Ima::const_reference, const Ima::pixel_type::reference> &&
Same<Ima::const_pixel_type, const Ima::pixel_type> &&
Same<Ima::const_pixel_type, Ima::const_pixel_range::value_type> &&
Same<Ima::const_reference, Ima::const_value_range::value_type> &&
!
is_const_v<Ima::value_type> &&
!
is_reference_v<Ima::value_type> &&
requires( Ima ima, const Ima cima, Ima::domain_type d,
Ima::index_type k, Ima::point_type p) {
...
...
@@ -152,8 +152,8 @@ ConcreteImage
.. code:: cpp
template <typename ConcIm, ConcIma = remove_cvref<ConcIm>>
concept ConcreteImage =
requires
Semiregular<ConcIma> &&
requires
Image<ConcIma> &&
concept ConcreteImage = Semiregular<ConcIma> &&
Image<ConcIma> &&
requires( ConcIma ima, ConcIma::domain_type d,
ConcIma::index_type k, ConcIma::value_type v) {
...
...
@@ -204,14 +204,14 @@ WritableImage
typename WIma::value_range;
} &&
requires
ForwardRange<WIma::pixel_range> &&
requires
ForwardRange<WIma::value_range> &&
requires
OutputRange<WIma::pixel_range, WIma::pixel_type> &&
requires
OutputRange<WIma::value_range, WIma::value_type> &&
ForwardRange<WIma::pixel_range> &&
ForwardRange<WIma::value_range> &&
OutputRange<WIma::pixel_range, WIma::pixel_type> &&
OutputRange<WIma::value_range, WIma::value_type> &&
requires
Same<WIma::reference, WIma::pixel_type::reference> &&
requires
Same<WIma::pixel_type, WIma::pixel_range::value_type> &&
requires
Same<WIma::reference, WIma::value_range::value_type> &&
Same<WIma::reference, WIma::pixel_type::reference> &&
Same<WIma::pixel_type, WIma::pixel_range::value_type> &&
Same<WIma::reference, WIma::value_range::value_type> &&
requires(WIma wima, WIma::index_type k, WIma::domain_type d, WIma::value_type v) {
{ wima[k] } -> WIma::reference;
...
...
@@ -223,7 +223,7 @@ WritableImage
.. _concept-details-BidirectionalImage:
BidirectionalImage
------------------
-
------------------
.. cpp:concept:: template <typename BidirIma> BidirectionalImage
...
...
@@ -244,17 +244,17 @@ BidirectionalImage
concept BidirectionalImage =
Image<BidirIma> &&
requires
BidirectionalRange<BidirIma::const_pixel_range> &&
requires
BidirectionalRange<BidirIma::const_value_range> &&
BidirectionalRange<BidirIma::const_pixel_range> &&
BidirectionalRange<BidirIma::const_value_range> &&
requires
Same<BidirIma::const_pixel_type, BidirIma::const_pixel_range::value_type> &&
requires
Same<BidirIma::const_reference, BidirIma::const_value_range::value_type>;
Same<BidirIma::const_pixel_type, BidirIma::const_pixel_range::value_type> &&
Same<BidirIma::const_reference, BidirIma::const_value_range::value_type>;
.. _concept-details-WritableBidirectionalImage:
WritableBidirectionalImage
--------------------------
-
--------------------------
.. cpp:concept:: template <typename WBidirIma> WritableBidirectionalImage
...
...
@@ -277,11 +277,11 @@ WritableBidirectionalImage
WritableImage<WBidirIma> &&
BidirectionnalImage<WBidirIma> &&
requires
BidirectionalRange<WBidirIma::pixel_range> &&
requires
BidirectionalRange<WBidirIma::value_range> &&
BidirectionalRange<WBidirIma::pixel_range> &&
BidirectionalRange<WBidirIma::value_range> &&
requires
Same<WBidirIma::pixel_type, WBidirIma::pixel_range::value_type> &&
requires
Same<WBidirIma::reference, WBidirIma::value_range::value_type>;
Same<WBidirIma::pixel_type, WBidirIma::pixel_range::value_type> &&
Same<WBidirIma::reference, WBidirIma::value_range::value_type>;
.. _concept-details-AccessibleImage:
...
...
@@ -397,13 +397,13 @@ RandomAccessImage
BidirectionalImage<RndAccIma> &&
AccessibleImage<RndAccIma> &&
requires
RandomAccessRange<RndAccIma::const_pixel_range> &&
requires
RandomAccessRange<RndAccIma::const_value_range> &&
requires
SizedRange<WRndAccIma::const_pixel_range> &&
requires
SizedRange<WRndAccIma::const_value_range> &&
RandomAccessRange<RndAccIma::const_pixel_range> &&
RandomAccessRange<RndAccIma::const_value_range> &&
SizedRange<WRndAccIma::const_pixel_range> &&
SizedRange<WRndAccIma::const_value_range> &&
requires
Same<RndAccIma::const_pixel_type, RndAccIma::const_pixel_range::value_type> &&
requires
Same<RndAccIma::const_reference, RndAccIma::const_value_range::value_type>;
Same<RndAccIma::const_pixel_type, RndAccIma::const_pixel_range::value_type> &&
Same<RndAccIma::const_reference, RndAccIma::const_value_range::value_type>;
.. _concept-details-WritableRandomAccessImage:
...
...
@@ -430,14 +430,14 @@ WritableRandomAccessImage
template <typename WRndAccIm, WRndAccIma = remove_cvref<WRndAccIm>>
concept WritableRandomAccessImage =
requires
WritableBidirectionalImage<WRndAccIma> &&
requires
WritableAccessibleImage<WRndAccIma> &&
requires
RandomAccessImage<WRndAccIma> &&
requires
RandomAccessRange<WRndAccIma::pixel_range> &&
requires
RandomAccessRange<WRndAccIma::value_range> &&
requires
SizedRange<WRndAccIma::pixel_range> &&
requires
SizedRange<WRndAccIma::value_range> &&
WritableBidirectionalImage<WRndAccIma> &&
WritableAccessibleImage<WRndAccIma> &&
RandomAccessImage<WRndAccIma> &&
RandomAccessRange<WRndAccIma::pixel_range> &&
RandomAccessRange<WRndAccIma::value_range> &&
SizedRange<WRndAccIma::pixel_range> &&
SizedRange<WRndAccIma::value_range> &&
requires
Same<WRndAccIma::pixel_type, WRndAccIma::pixel_range::value_type> &&
requires
Same<WRndAccIma::reference, WRndAccIma::value_range::value_type>;
Same<WRndAccIma::pixel_type, WRndAccIma::pixel_range::value_type> &&
Same<WRndAccIma::reference, WRndAccIma::value_range::value_type>;
doc/sphinx/source/concepts/details/index.rst
View file @
71e5c7e7
Index concepts
==============
Index concepts
(details)
==============
==========
.. contents:: Table of Contents
:local:
...
...
@@ -39,4 +39,4 @@ Index
.. code:: cpp
template<typename Idx>
concept Index =
requires Unsigned
Integral<Idx>;
concept Index = Integral<Idx>;
doc/sphinx/source/concepts/details/neighborhood.rst
View file @
71e5c7e7
Neighborhood concepts
=====================
\ No newline at end of file
Neighborhood concepts (details)
===============================
\ No newline at end of file
doc/sphinx/source/concepts/details/pixel.rst
View file @
71e5c7e7
Pixel concepts
==============
Pixel concepts
(details)
==============
==========
.. contents:: Table of Contents
:local:
...
...
@@ -71,16 +71,16 @@ Pixel
typename Pix::reference;
} &&
requires
Value<Pix::value_type> &&
requires
Point<Pix::point_type> &&
requires
Image<Pix::image_type> &&
Value<Pix::value_type> &&
Point<Pix::point_type> &&
Image<Pix::image_type> &&
requires
Same<Pix::value_type, Pix::image_type::value_type> &&
requires
Same<Pix::point_type, Pix::image_type::point_type> &&
requires
Same<Pix::reference, Pix::image_type::reference> &&
Same<Pix::value_type, Pix::image_type::value_type> &&
Same<Pix::point_type, Pix::image_type::point_type> &&
Same<Pix::reference, Pix::image_type::reference> &&
requires False<
is_const_v<Pix::value_type> &&
requires FaLse<
is_reference_v<Pix::value_type> &&
!
is_const_v<Pix::value_type> &&
!
is_reference_v<Pix::value_type> &&
requires(const Pix cpix, Pix pix) {
{ cpix.value() } -> const reference;
...
...
@@ -108,13 +108,13 @@ TransformedPixel
template< typename TP, typename FP,
ToPix = remove_cvref<TP>, FromPix = remove_cvref<FP>>
concept TransformedPixel =
requires
Pixel<ToPix> &&
requires
Pixel<FromPix> &&
concept TransformedPixel = Pixel<ToPix> &&
Pixel<FromPix> &&
requires {
typename ToPix::from_pixel_type
} &&
requires
Same<ToPix::from_pixel_type, FromPix>;
Same<ToPix::from_pixel_type, FromPix>;
.. _concept-details-ProjectedPixel:
...
...
@@ -124,31 +124,14 @@ ProjectedPixel
.. cpp:concept:: template <typename ToPix, typename FromPix> ProjectedPixel
#. Refines the :cpp:concept:`template <typename Pix> Pixel` concept.
#. Refines the :cpp:concept:`template <typename ToPix, typename FromPix> TransformedPixel` concept.
**Notation**
.. cpp:type:: PPix
.. cpp:type:: from_pixel_type = PPix::from_pixel_type
.. cpp:var:: PPix toPix
.. cpp:var:: from_pixel_type fromPix
**Valid Expressions**
- :cpp:expr:`fromPix(toPix)` returns :cpp:expr:`from_pixel_type`.
- :cpp:expr:`fromPix(move(toPix))` returns :cpp:expr:`from_pixel_type`.
- :cpp:expr:`fromPix = toPix` returns :cpp:expr:`from_pixel_type&`.
- :cpp:expr:`fromPix = move(toPix)` returns :cpp:expr:`from_pixel_type&`.
- :cpp:expr:`static_cast<from_pixel_type>(toPix)` returns :cpp:expr:`from_pixel_type&&`.
**Possible implementation**
.. code:: cpp
template<typename ToPix, typename FromPix, PPix = remove_cvref<ToPix>>
concept ProjectedPixel = requires TransformedPixel<ToPix, FromPix> &&
requires ConvertibleTo<ToPix, FromPix>;
concept ProjectedPixel = TransformedPixel<ToPix, FromPix>;
.. _concept-details-ZippedPixel:
...
...
@@ -172,13 +155,13 @@ ZippedPixel
template< typename ZP, typename... FromPixs,
ZPix = remove_cvref<ZPix>>
concept ZippedPixel =
requires
Pixel<ZPix> &&
requires
Pixel<FromPixs>... &&
Pixel<ZPix> &&
Pixel<FromPixs>... &&
requires {
typename ZPix::zipped_pixel_type_list<FromPixs...>
} &&
requires
ConvertibleTo<
ConvertibleTo<
ZPix::zipped_pixel_type_list<FromPixs...>,
basic_type_list<FromPixs...>>;
doc/sphinx/source/concepts/details/point.rst
View file @
71e5c7e7
Point concepts
==============
Point concepts
(details)
==============
==========
.. contents:: Table of Contents
:local:
...
...
@@ -51,5 +51,5 @@ Point
.. code:: cpp
template<typename Pnt>
concept Point =
requires
Regular<Pnt> &&
requires
StrictTotallyOrdered<Pnt>;
concept Point = Regular<Pnt> &&
StrictTotallyOrdered<Pnt>;
doc/sphinx/source/concepts/details/range.rst
View file @
71e5c7e7
Range concepts
==============
Range concepts
(details)
==============
==========
.. contents:: Table of Contents
:local:
...
...
@@ -45,7 +45,7 @@ Range
.. code:: cpp
template<typename R, Rng = remove_cvref<R>>
concept Range =
requires
Semiregular<Rng> &&
concept Range = Semiregular<Rng> &&
requires(Rng rng, const Rng crng) {
{ rng.begin() } -> /* implementation defined */;
...
...
@@ -83,8 +83,8 @@ SizedRange
inline constexpr bool disable_sized_range = /* implementation defined */;
template<typename R, SRng = remove_cvref<R>>
concept SizedRange =
requires
Range<SRng> &&
requires False<
disable_sized_range<SRng>
>
&&
concept SizedRange = Range<SRng> &&
!
disable_sized_range<SRng> &&
requires(const SRng csrng) {
{ csrng.size() } -> Rng::iterator_type::difference_type;
...
...
@@ -121,13 +121,13 @@ InputRange
.. code:: cpp
template<typename R, Rng = remove_cvref<R>>
concept InputRange =
requires
Range<Rng> &&
concept InputRange = Range<Rng> &&
requires {
typename Rng::iterator_type;
} &&
requires
InputIterator<Rng::iterator_type>;
InputIterator<Rng::iterator_type>;
.. _concept-details-OutputRange:
...
...
@@ -165,13 +165,13 @@ OutputRange
.. code:: cpp
template<typename R, typename T, Rng = remove_cvref<R>>
concept OutputRange =
requires
Range<Rng> &&
concept OutputRange = Range<Rng> &&
requires {
typename Rng::iterator_type;
} &&
requires
OuputIterator<Rng::iterator_type, T>;
OuputIterator<Rng::iterator_type, T>;
.. _concept-details-ForwardRange:
...
...
@@ -207,14 +207,14 @@ ForwardRange
.. code:: cpp
template<typename R, FwdRng = remove_cvref<R>>
concept ForwardRange =
requires
InputRange<FwdRng> &&
requires
ForwardIterator<FwdRng::iterator_type> &&
concept ForwardRange = InputRange<FwdRng> &&
ForwardIterator<FwdRng::iterator_type> &&
requires {
typename FwdRng::value_type;
} &&
requires
Same<FwdRng::value_type, FwdRng::iterator_type::value_type>;
Same<FwdRng::value_type, FwdRng::iterator_type::value_type>;
.. _concept-details-BidirectionalRange:
...
...
@@ -251,8 +251,8 @@ BidirectionalRange
.. code:: cpp
template<typename R, BidirRng = remove_cvref<R>>
concept BidirectionalRange =
requires
ForwardRange<BidirRng> &&
requires
BidirectionalIterator<BidirRng::iterator_type> &&
concept BidirectionalRange = ForwardRange<BidirRng> &&
BidirectionalIterator<BidirRng::iterator_type> &&
requires(BidirRng bidirrng, const BidirRng cbidirrng) {
{ bidirrng.rbegin() } -> /* implementation defined */;
...
...
@@ -302,5 +302,5 @@ RandomAccessRange
.. code:: cpp
template<typename R, RndAccRng = remove_cvref<R>>
concept RandomAccessRange =
requires
BidirectionalRange<RndAccRng> &&
requires
RandomAccessIterator<RndAccRng::iterator_type>;
concept RandomAccessRange = BidirectionalRange<RndAccRng> &&
RandomAccessIterator<RndAccRng::iterator_type>;
doc/sphinx/source/concepts/details/value.rst
View file @
71e5c7e7
Value concepts
==============
Value concepts
(details)
==============
==========
.. contents:: Table of Contents
:local:
...
...
@@ -19,7 +19,7 @@ Value
.. code:: cpp
template<typename Val>
concept Value =
requires
SemiregularValue<Val>;
concept Value = SemiregularValue<Val>;
.. _concept-details-SemiregularValue:
...
...
@@ -56,7 +56,7 @@ SemiregularValue
.. code:: cpp
template<typename SemiregVal>
concept SemiregularValue =
requires
Semiregular<SemiregVal>;
concept SemiregularValue = Semiregular<SemiregVal>;
.. _concept-details-RegularValue:
...
...
@@ -86,8 +86,8 @@ RegularValue
.. code:: cpp
template<typename RegVal>
concept RegularValue =
requires
SemiregularValue<RegVal> &&
requires
Regular<RegVal>;
concept RegularValue = SemiregularValue<RegVal> &&
Regular<RegVal>;
.. _concept-details-StrictTotallyOrderedRegularValue:
...
...
@@ -117,5 +117,5 @@ StrictTotallyOrderedRegularValue
.. code:: cpp
template<typename STORegVal>
concept RegularValue =
requires
RegularValue<STORegVal> &&
requires
StrictTotallyOrdered<STORegVal>;
concept RegularValue = RegularValue<STORegVal> &&
StrictTotallyOrdered<STORegVal>;
doc/sphinx/source/concepts/details/view.rst
View file @
71e5c7e7
View concepts
=============
View concepts
(details)
=============
==========
.. contents:: Table of Contents
:local:
...
...
@@ -20,7 +20,7 @@ View
.. code:: cpp
template <typename V, Vw = remove_cvref<V>>
concept View =
requires
Image<Vw>;
concept View = Image<Vw>;
.. _concept-details-WritableView:
...
...
@@ -38,8 +38,8 @@ WritableView
.. code:: cpp
template <typename WV, WView = remove_cvref<WV>>
concept WritableView =
requires
View<WView> &&
requires
WritableImage<WView>;
concept WritableView = View<WView> &&
WritableImage<WView>;
.. _concept-details-FilterView:
...
...
@@ -67,8 +67,8 @@ FilterView
.. code:: cpp
template <typename FV, typename Pred, FView = remove_cvref<FV>>
concept FilterView =
requires
View<FView> &&
requires
Predicate<Pred, FView::const_pixel_type>;
concept FilterView = View<FView> &&
Predicate<Pred, FView::const_pixel_type>;
.. _concept-details-WritableFilterView:
...
...
@@ -97,9 +97,9 @@ WritableFilterView
.. code:: cpp
template <typename WFV, typename Pred, WFView = remove_cvref<WFV>>
concept WritableFilterView =
requires
WritableView<WFView> &&
requires
FilterView<WFView, Pred> &&
requires
Predicate<Pred, WFView::pixel_type>;
concept WritableFilterView = WritableView<WFView> &&
FilterView<WFView, Pred> &&
Predicate<Pred, WFView::pixel_type>;
.. _concept-details-TransformView:
...
...
@@ -109,7 +109,7 @@ TransformView
.. cpp:concept:: template <typename TView, typename Func> TransformView
#. Refines the :cpp:concept:`template <typename V> View` concept.
#. ``Func`` models the :cpp:concept:`template <typename R, typename F, typename... Args> InvocableR`
concept where ``R`` models the :cpp:concept:`template <typename ToPix, typename FromPix> TransformedPixel`
concept.
#. ``Func`` models the :cpp:concept:`template <typename R, typename F, typename... Args> InvocableR` concept.
**Notation**
...
...
@@ -119,16 +119,16 @@ TransformView
**Valid Expressions**
- :cpp:expr:`func(cpix)` return-type models the :cpp:concept:`template <typename ToPix, typename FromPix> TransformedPixel` concept.
- :cpp:expr:`func(cpix)` return-type models the :cpp:concept:`template <typename ToPix, typename FromPix> TransformedPixel` concept
with `ToPix = decltype(func(cpix))` and `FromPix = TView::const_pixel_type`
.