Skip to content

Commit 0455e48

Browse files
zykurealt-graph
authored andcommitted
Replace std::result_of_t with std::invoke_result_t to fix C++20 build
1 parent 89b2c9d commit 0455e48

1 file changed

Lines changed: 38 additions & 38 deletions

File tree

include/gul17/statistics.h

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,8 @@ class StandardDeviationMean {
160160
template <typename ResultT = statistics_result_type,
161161
typename ContainerT,
162162
typename ElementT = typename ContainerT::value_type,
163-
typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&),
164-
typename DataT = typename std::decay_t<std::result_of_t<Accessor(ElementT)>>,
163+
typename Accessor = std::invoke_result_t<decltype(ElementAccessor<ElementT>()), ElementT>(*)(ElementT const&),
164+
typename DataT = typename std::decay_t<std::invoke_result_t<Accessor, ElementT>>,
165165
typename = std::enable_if_t<IsContainerLike<ContainerT>::value>
166166
>
167167
auto mean(ContainerT const& container, Accessor accessor = ElementAccessor<ElementT>()) -> ResultT
@@ -198,8 +198,8 @@ auto mean(ContainerT const& container, Accessor accessor = ElementAccessor<Eleme
198198
template <typename ResultT = statistics_result_type,
199199
typename ContainerT,
200200
typename ElementT = typename ContainerT::value_type,
201-
typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&),
202-
typename DataT = typename std::decay_t<std::result_of_t<Accessor(ElementT)>>,
201+
typename Accessor = std::invoke_result_t<decltype(ElementAccessor<ElementT>()), ElementT>(*)(ElementT const&),
202+
typename DataT = typename std::decay_t<std::invoke_result_t<Accessor, ElementT>>,
203203
typename = std::enable_if_t<IsContainerLike<ContainerT>::value>
204204
>
205205
auto rms(ContainerT const& container, Accessor accessor = ElementAccessor<ElementT>()) -> ResultT
@@ -239,8 +239,8 @@ auto rms(ContainerT const& container, Accessor accessor = ElementAccessor<Elemen
239239
template <typename ResultT = statistics_result_type,
240240
typename ContainerT,
241241
typename ElementT = typename ContainerT::value_type,
242-
typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&),
243-
typename DataT = typename std::decay_t<std::result_of_t<Accessor(ElementT)>>,
242+
typename Accessor = std::invoke_result_t<decltype(ElementAccessor<ElementT>()), ElementT>(*)(ElementT const&),
243+
typename DataT = typename std::decay_t<std::invoke_result_t<Accessor, ElementT>>,
244244
typename = std::enable_if_t<IsContainerLike<ContainerT>::value>
245245
>
246246
auto median(ContainerT const& container, Accessor accessor = ElementAccessor<ElementT>()) -> ResultT
@@ -307,8 +307,8 @@ auto median(ContainerT const& container, Accessor accessor = ElementAccessor<Ele
307307
*/
308308
template <typename ContainerT,
309309
typename ElementT = typename ContainerT::value_type,
310-
typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&),
311-
typename DataT = typename std::decay_t<std::result_of_t<Accessor(ElementT)>>,
310+
typename Accessor = std::invoke_result_t<decltype(ElementAccessor<ElementT>()), ElementT>(*)(ElementT const&),
311+
typename DataT = typename std::decay_t<std::invoke_result_t<Accessor, ElementT>>,
312312
typename = std::enable_if_t<IsContainerLike<ContainerT>::value>
313313
>
314314
auto maximum(ContainerT const& container, Accessor accessor = ElementAccessor<ElementT>()) -> DataT
@@ -361,8 +361,8 @@ auto maximum(ContainerT const& container, Accessor accessor = ElementAccessor<El
361361
*/
362362
template <typename ContainerT,
363363
typename ElementT = typename ContainerT::value_type,
364-
typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&),
365-
typename DataT = typename std::decay_t<std::result_of_t<Accessor(ElementT)>>,
364+
typename Accessor = std::invoke_result_t<decltype(ElementAccessor<ElementT>()), ElementT>(*)(ElementT const&),
365+
typename DataT = typename std::decay_t<std::invoke_result_t<Accessor, ElementT>>,
366366
typename = std::enable_if_t<IsContainerLike<ContainerT>::value>
367367
>
368368
auto minimum(ContainerT const& container, Accessor accessor = ElementAccessor<ElementT>()) -> DataT
@@ -420,8 +420,8 @@ auto minimum(ContainerT const& container, Accessor accessor = ElementAccessor<El
420420
*/
421421
template <typename ContainerT,
422422
typename ElementT = typename ContainerT::value_type,
423-
typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&),
424-
typename DataT = typename std::decay_t<std::result_of_t<Accessor(ElementT)>>,
423+
typename Accessor = std::invoke_result_t<decltype(ElementAccessor<ElementT>()), ElementT>(*)(ElementT const&),
424+
typename DataT = typename std::decay_t<std::invoke_result_t<Accessor, ElementT>>,
425425
typename = std::enable_if_t<IsContainerLike<ContainerT>::value>
426426
>
427427
auto min_max(ContainerT const& container, Accessor accessor = ElementAccessor<ElementT>()) -> MinMax<DataT>
@@ -468,8 +468,8 @@ auto min_max(ContainerT const& container, Accessor accessor = ElementAccessor<El
468468
*/
469469
template <typename ContainerT,
470470
typename ElementT = typename ContainerT::value_type,
471-
typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&),
472-
typename DataT = typename std::decay_t<std::result_of_t<Accessor(ElementT)>>,
471+
typename Accessor = std::invoke_result_t<decltype(ElementAccessor<ElementT>()), ElementT>(*)(ElementT const&),
472+
typename DataT = typename std::decay_t<std::invoke_result_t<Accessor, ElementT>>,
473473
typename = std::enable_if_t<IsContainerLike<ContainerT>::value>
474474
>
475475
auto remove_outliers(ContainerT&& cont, std::size_t outliers,
@@ -492,8 +492,8 @@ auto remove_outliers(ContainerT&& cont, std::size_t outliers,
492492
*/
493493
template <typename ContainerT,
494494
typename ElementT = typename ContainerT::value_type,
495-
typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&),
496-
typename DataT = typename std::decay_t<std::result_of_t<Accessor(ElementT)>>,
495+
typename Accessor = std::invoke_result_t<decltype(ElementAccessor<ElementT>()), ElementT>(*)(ElementT const&),
496+
typename DataT = typename std::decay_t<std::invoke_result_t<Accessor, ElementT>>,
497497
typename = std::enable_if_t<IsContainerLike<ContainerT>::value>
498498
>
499499
auto remove_outliers(ContainerT const& cont, std::size_t outliers,
@@ -545,8 +545,8 @@ auto remove_outliers(ContainerT const& cont, std::size_t outliers,
545545
template <typename ResultT = statistics_result_type,
546546
typename ContainerT,
547547
typename ElementT = typename ContainerT::value_type,
548-
typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&),
549-
typename DataT = typename std::decay_t<std::result_of_t<Accessor(ElementT)>>,
548+
typename Accessor = std::invoke_result_t<decltype(ElementAccessor<ElementT>()), ElementT>(*)(ElementT const&),
549+
typename DataT = typename std::decay_t<std::invoke_result_t<Accessor, ElementT>>,
550550
typename = std::enable_if_t<IsContainerLike<ContainerT>::value>
551551
>
552552
auto standard_deviation(ContainerT const& container, Accessor accessor = ElementAccessor<ElementT>()) -> StandardDeviationMean<ResultT>
@@ -598,8 +598,8 @@ auto standard_deviation(ContainerT const& container, Accessor accessor = Element
598598
template <typename ResultT = statistics_result_type,
599599
typename ContainerT,
600600
typename ElementT = typename ContainerT::value_type,
601-
typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&),
602-
typename DataT = typename std::decay_t<std::result_of_t<Accessor(ElementT)>>,
601+
typename Accessor = std::invoke_result_t<decltype(ElementAccessor<ElementT>()), ElementT>(*)(ElementT const&),
602+
typename DataT = typename std::decay_t<std::invoke_result_t<Accessor, ElementT>>,
603603
typename OpClosure,
604604
typename = std::enable_if_t<IsContainerLike<ContainerT>::value>
605605
>
@@ -666,8 +666,8 @@ namespace {
666666
template <typename ResultT = statistics_result_type,
667667
typename IteratorT,
668668
typename ElementT = std::decay_t<decltype(*std::declval<IteratorT>())>,
669-
typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&),
670-
typename DataT = std::decay_t<std::result_of_t<Accessor(ElementT)>>>
669+
typename Accessor = std::invoke_result_t<decltype(ElementAccessor<ElementT>()), ElementT>(*)(ElementT const&),
670+
typename DataT = std::decay_t<std::invoke_result_t<Accessor, ElementT>>>
671671
auto mean(IteratorT const& begin, IteratorT const& end,
672672
Accessor accessor = ElementAccessor<ElementT>()) -> ResultT
673673
{
@@ -686,8 +686,8 @@ auto mean(IteratorT const& begin, IteratorT const& end,
686686
template <typename ResultT = statistics_result_type,
687687
typename IteratorT,
688688
typename ElementT = std::decay_t<decltype(*std::declval<IteratorT>())>,
689-
typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&),
690-
typename DataT = std::decay_t<std::result_of_t<Accessor(ElementT)>>>
689+
typename Accessor = std::invoke_result_t<decltype(ElementAccessor<ElementT>()), ElementT>(*)(ElementT const&),
690+
typename DataT = std::decay_t<std::invoke_result_t<Accessor, ElementT>>>
691691
auto rms(IteratorT const& begin, IteratorT const& end,
692692
Accessor accessor = ElementAccessor<ElementT>()) -> ResultT
693693
{
@@ -706,8 +706,8 @@ auto rms(IteratorT const& begin, IteratorT const& end,
706706
template <typename ResultT = statistics_result_type,
707707
typename IteratorT,
708708
typename ElementT = std::decay_t<decltype(*std::declval<IteratorT>())>,
709-
typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&),
710-
typename DataT = std::decay_t<std::result_of_t<Accessor(ElementT)>>>
709+
typename Accessor = std::invoke_result_t<decltype(ElementAccessor<ElementT>()), ElementT>(*)(ElementT const&),
710+
typename DataT = std::decay_t<std::invoke_result_t<Accessor, ElementT>>>
711711
auto median(IteratorT const& begin, IteratorT const& end,
712712
Accessor accessor = ElementAccessor<ElementT>()) -> ResultT
713713
{
@@ -725,8 +725,8 @@ auto median(IteratorT const& begin, IteratorT const& end,
725725
*/
726726
template <typename IteratorT,
727727
typename ElementT = std::decay_t<decltype(*std::declval<IteratorT>())>,
728-
typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&),
729-
typename DataT = std::decay_t<std::result_of_t<Accessor(ElementT)>>>
728+
typename Accessor = std::invoke_result_t<decltype(ElementAccessor<ElementT>()), ElementT>(*)(ElementT const&),
729+
typename DataT = std::decay_t<std::invoke_result_t<Accessor, ElementT>>>
730730
auto maximum(IteratorT const& begin, IteratorT const& end,
731731
Accessor accessor = ElementAccessor<ElementT>()) -> DataT
732732
{
@@ -744,8 +744,8 @@ template <typename IteratorT,
744744
*/
745745
template <typename IteratorT,
746746
typename ElementT = std::decay_t<decltype(*std::declval<IteratorT>())>,
747-
typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&),
748-
typename DataT = std::decay_t<std::result_of_t<Accessor(ElementT)>>>
747+
typename Accessor = std::invoke_result_t<decltype(ElementAccessor<ElementT>()), ElementT>(*)(ElementT const&),
748+
typename DataT = std::decay_t<std::invoke_result_t<Accessor, ElementT>>>
749749
auto minimum(IteratorT const& begin, IteratorT const& end,
750750
Accessor accessor = ElementAccessor<ElementT>()) -> DataT
751751
{
@@ -763,8 +763,8 @@ template <typename IteratorT,
763763
*/
764764
template <typename IteratorT,
765765
typename ElementT = std::decay_t<decltype(*std::declval<IteratorT>())>,
766-
typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&),
767-
typename DataT = std::decay_t<std::result_of_t<Accessor(ElementT)>>>
766+
typename Accessor = std::invoke_result_t<decltype(ElementAccessor<ElementT>()), ElementT>(*)(ElementT const&),
767+
typename DataT = std::decay_t<std::invoke_result_t<Accessor, ElementT>>>
768768
auto min_max(IteratorT const& begin, IteratorT const& end,
769769
Accessor accessor = ElementAccessor<ElementT>()) -> MinMax<DataT>
770770
{
@@ -784,8 +784,8 @@ auto min_max(IteratorT const& begin, IteratorT const& end,
784784
*/
785785
template <typename IteratorT,
786786
typename ElementT = std::decay_t<decltype(*std::declval<IteratorT>())>,
787-
typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&),
788-
typename DataT = std::decay_t<std::result_of_t<Accessor(ElementT)>>>
787+
typename Accessor = std::invoke_result_t<decltype(ElementAccessor<ElementT>()), ElementT>(*)(ElementT const&),
788+
typename DataT = std::decay_t<std::invoke_result_t<Accessor, ElementT>>>
789789
auto remove_outliers(IteratorT const& begin, IteratorT const& end,
790790
std::size_t outliers, Accessor accessor = ElementAccessor<ElementT>()) -> std::vector<ElementT>
791791
{
@@ -805,8 +805,8 @@ auto remove_outliers(IteratorT const& begin, IteratorT const& end,
805805
template <typename ResultT = statistics_result_type,
806806
typename IteratorT,
807807
typename ElementT = std::decay_t<decltype(*std::declval<IteratorT>())>,
808-
typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&),
809-
typename DataT = std::decay_t<std::result_of_t<Accessor(ElementT)>>>
808+
typename Accessor = std::invoke_result_t<decltype(ElementAccessor<ElementT>()), ElementT>(*)(ElementT const&),
809+
typename DataT = std::decay_t<std::invoke_result_t<Accessor, ElementT>>>
810810
auto standard_deviation(IteratorT const& begin, IteratorT const& end,
811811
Accessor accessor = ElementAccessor<ElementT>()) -> StandardDeviationMean<ResultT>
812812
{
@@ -827,8 +827,8 @@ auto standard_deviation(IteratorT const& begin, IteratorT const& end,
827827
template <typename ResultT = statistics_result_type,
828828
typename IteratorT,
829829
typename ElementT = std::decay_t<decltype(*std::declval<IteratorT>())>,
830-
typename Accessor = std::result_of_t<decltype(ElementAccessor<ElementT>())(ElementT)>(*)(ElementT const&),
831-
typename DataT = std::decay_t<std::result_of_t<Accessor(ElementT)>>,
830+
typename Accessor = std::invoke_result_t<decltype(ElementAccessor<ElementT>()), ElementT>(*)(ElementT const&),
831+
typename DataT = std::decay_t<std::invoke_result_t<Accessor, ElementT>>,
832832
typename OpClosure>
833833
auto accumulate(IteratorT const& begin, IteratorT const& end, OpClosure op,
834834
Accessor accessor = ElementAccessor<ElementT>()) -> ResultT

0 commit comments

Comments
 (0)