alpaka
Abstraction Library for Parallel Kernel Acceleration
Loading...
Searching...
No Matches
include
alpaka
mem
concepts
detail
CopyConstructableDataSource.hpp
Go to the documentation of this file.
1
/* Copyright 2025 Simeon Ehrig
2
* SPDX-License-Identifier: MPL-2.0
3
*/
4
5
#pragma once
6
7
#include "
alpaka/mem/trait.hpp
"
8
9
#include <concepts>
10
11
namespace
alpaka::internal::concepts
12
{
13
/** Check whether the copy constructor of the data source `T` respects the const correctness of the data type.
14
*
15
* @details
16
* Data sources have a data type that can be mutable or constant (marked with const). The following copies or
17
* assignments to a new object with the corresponding data type are possible:
18
* - mutable -> mutable
19
* - const -> const
20
* - mutable -> const
21
**/
22
template
<
typename
T>
23
concept
CopyConstructableDataSource
=
requires
{
24
requires
alpaka::internal::CopyConstructableDataSource<std::decay_t<T>
>::value;
25
/// copy constructor inner mutable -> inner mutable
26
requires
std::constructible_from<
27
typename
alpaka::internal::CopyConstructableDataSource<std::decay_t<T>
>::InnerMutable,
28
typename
alpaka::internal::CopyConstructableDataSource<std::decay_t<T>
>::InnerMutable&>;
29
/// copy constructor inner const -> inner const
30
requires
std::constructible_from<
31
typename
alpaka::internal::CopyConstructableDataSource<std::decay_t<T>
>::InnerConst,
32
typename
alpaka::internal::CopyConstructableDataSource<std::decay_t<T>
>::InnerConst&>;
33
/// copy constructor inner mutable -> inner const
34
requires
std::constructible_from<
35
typename
alpaka::internal::CopyConstructableDataSource<std::decay_t<T>
>::InnerConst,
36
typename
alpaka::internal::CopyConstructableDataSource<std::decay_t<T>
>::InnerMutable&>;
37
/// not allowed: copy constructor inner const -> inner mutable
38
requires
!std::constructible_from<
39
typename
alpaka::internal::CopyConstructableDataSource<std::decay_t<T>
>::InnerMutable,
40
typename
alpaka::internal::CopyConstructableDataSource<std::decay_t<T>
>::InnerConst&>;
41
/// copy assignment inner mutable -> inner mutable
42
requires
std::assignable_from<
43
typename
alpaka::internal::CopyConstructableDataSource<std::decay_t<T>
>::InnerMutable&,
44
typename
alpaka::internal::CopyConstructableDataSource<std::decay_t<T>
>::InnerMutable>;
45
/// copy assignment inner const -> inner const
46
requires
std::assignable_from<
47
typename
alpaka::internal::CopyConstructableDataSource<std::decay_t<T>
>::InnerConst&,
48
typename
alpaka::internal::CopyConstructableDataSource<std::decay_t<T>
>::InnerConst>;
49
/// copy assignment inner mutable -> inner const
50
requires
std::assignable_from<
51
typename
alpaka::internal::CopyConstructableDataSource<std::decay_t<T>
>::InnerConst&,
52
typename
alpaka::internal::CopyConstructableDataSource<std::decay_t<T>
>::InnerMutable>;
53
/// not allowed: copy assignment inner const -> inner mutable
54
requires
!std::assignable_from<
55
typename
alpaka::internal::CopyConstructableDataSource<std::decay_t<T>
>::InnerMutable&,
56
typename
alpaka::internal::CopyConstructableDataSource<std::decay_t<T>
>::InnerConst>;
57
};
58
}
// namespace alpaka::internal::concepts
alpaka::internal::concepts::CopyConstructableDataSource
Check whether the copy constructor of the data source T respects the const correctness of the data ty...
Definition
CopyConstructableDataSource.hpp:23
trait.hpp
alpaka::internal::concepts
Definition
CopyConstructableDataSource.hpp:12
alpaka::internal::CopyConstructableDataSource
Specialize the trait for DataSource class if the object is copyable.
Definition
trait.hpp:67
Generated on
for alpaka by
1.16.1