31 #ifndef _util_misc_conc_cache_fwd_h
32 #define _util_misc_conc_cache_fwd_h
36 template<
int n_indices,
int... PermutedIndices>
37 struct KeyPermutation;
39 template<
int n_indices,
int idx_1,
int idx_2>
40 struct KeyTransposition;
42 template<
typename... Permutations>
46 struct IdentityKeyPermutation;
49 using IdentityKeySymmetry =
51 IdentityKeyPermutation<nkeys>
54 template <
int nkeys,
int idx1,
int idx2>
55 using SingleTranspositionKeySymmetry =
57 IdentityKeyPermutation<nkeys>,
58 KeyTransposition<nkeys, idx1, idx2>
61 template <
typename val_type,
typename... key_types>
62 class ConcurrentCacheBase;
64 template <
typename val_type,
typename symmetry,
typename... key_types>
65 class ConcurrentCacheWithSymmetry;
67 template <
typename val_type,
typename... key_types>
68 class ConcurrentCacheWithSymmetry<
70 KeySymmetry<IdentityKeyPermutation<sizeof...(key_types)>>,
74 template <
typename val_type,
int n_keys,
int idx1,
int idx2,
typename... key_types>
75 class ConcurrentCacheWithSymmetry<
78 IdentityKeyPermutation<sizeof...(key_types)>,
79 KeyTransposition<n_keys, idx1, idx2>
87 template <
typename val_type,
typename... key_types>