@@ -160,8 +160,8 @@ class StandardDeviationMean {
160160template <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 >
167167auto mean (ContainerT const & container, Accessor accessor = ElementAccessor<ElementT>()) -> ResultT
@@ -198,8 +198,8 @@ auto mean(ContainerT const& container, Accessor accessor = ElementAccessor<Eleme
198198template <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 >
205205auto rms (ContainerT const & container, Accessor accessor = ElementAccessor<ElementT>()) -> ResultT
@@ -239,8 +239,8 @@ auto rms(ContainerT const& container, Accessor accessor = ElementAccessor<Elemen
239239template <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 >
246246auto median (ContainerT const & container, Accessor accessor = ElementAccessor<ElementT>()) -> ResultT
@@ -307,8 +307,8 @@ auto median(ContainerT const& container, Accessor accessor = ElementAccessor<Ele
307307 */
308308template <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>
314314auto maximum (ContainerT const & container, Accessor accessor = ElementAccessor<ElementT>()) -> DataT
@@ -361,8 +361,8 @@ auto maximum(ContainerT const& container, Accessor accessor = ElementAccessor<El
361361 */
362362template <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>
368368auto minimum (ContainerT const & container, Accessor accessor = ElementAccessor<ElementT>()) -> DataT
@@ -420,8 +420,8 @@ auto minimum(ContainerT const& container, Accessor accessor = ElementAccessor<El
420420 */
421421template <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 >
427427auto 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 */
469469template <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 >
475475auto remove_outliers (ContainerT&& cont, std::size_t outliers,
@@ -492,8 +492,8 @@ auto remove_outliers(ContainerT&& cont, std::size_t outliers,
492492 */
493493template <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 >
499499auto remove_outliers (ContainerT const & cont, std::size_t outliers,
@@ -545,8 +545,8 @@ auto remove_outliers(ContainerT const& cont, std::size_t outliers,
545545template <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 >
552552auto standard_deviation (ContainerT const & container, Accessor accessor = ElementAccessor<ElementT>()) -> StandardDeviationMean<ResultT>
@@ -598,8 +598,8 @@ auto standard_deviation(ContainerT const& container, Accessor accessor = Element
598598template <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 {
666666template <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>>>
671671auto 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,
686686template <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>>>
691691auto 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,
706706template <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>>>
711711auto 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 */
726726template <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 */
745745template <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 */
764764template <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>>>
768768auto 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 */
785785template <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>>>
789789auto 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,
805805template <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>>>
810810auto 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,
827827template <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>
833833auto accumulate (IteratorT const & begin, IteratorT const & end, OpClosure op,
834834 Accessor accessor = ElementAccessor<ElementT>()) -> ResultT
0 commit comments