fix: math functions (support for inferior C++14 standard)

add C++14 constexpr modifying algorithms
This commit is contained in:
bolero-MURAKAMI 2013-10-25 12:29:16 +09:00
parent 58cff54e0d
commit c58c9cc0fc
106 changed files with 3465 additions and 2144 deletions

View file

@ -14,6 +14,8 @@
#include <sprout/container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/iterator/remove_iterator.hpp>
#include <sprout/iterator/type_traits/is_iterator_of.hpp>
#include <sprout/type_traits/enabler_if.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include <sprout/pit/pit.hpp>
#include <sprout/detail/container_complate.hpp>
@ -93,7 +95,20 @@ namespace sprout {
}
} // namespace fixed
using sprout::fixed::remove_copy;
template<
typename InputIterator, typename Result, typename T,
typename sprout::enabler_if<!sprout::is_output_iterator<Result>::value>::type = sprout::enabler
>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
remove_copy(InputIterator first, InputIterator last, Result const& result, T const& value) {
return sprout::fixed::remove_copy(first, last, result, value);
}
template<typename Result, typename InputIterator, typename T>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
remove_copy(InputIterator first, InputIterator last, T const& value) {
return sprout::fixed::remove_copy<Result>(first, last, value);
}
} // namespace sprout
#endif // #ifndef SPROUT_ALGORITHM_FIXED_REMOVE_COPY_HPP

View file

@ -14,6 +14,8 @@
#include <sprout/container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/iterator/remove_if_iterator.hpp>
#include <sprout/iterator/type_traits/is_iterator_of.hpp>
#include <sprout/type_traits/enabler_if.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include <sprout/pit/pit.hpp>
#include <sprout/detail/container_complate.hpp>
@ -93,7 +95,20 @@ namespace sprout {
}
} // namespace fixed
using sprout::fixed::remove_copy_if;
template<
typename InputIterator, typename Result, typename Predicate,
typename sprout::enabler_if<!sprout::is_output_iterator<Result>::value>::type = sprout::enabler
>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
remove_copy_if(InputIterator first, InputIterator last, Result const& result, Predicate pred) {
return sprout::fixed::remove_copy_if(first, last, result, pred);
}
template<typename Result, typename InputIterator, typename Predicate>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
remove_copy_if(InputIterator first, InputIterator last, Predicate pred) {
return sprout::fixed::remove_copy_if<Result>(first, last, pred);
}
} // namespace sprout
#endif // #ifndef SPROUT_ALGORITHM_FIXED_REMOVE_COPY_IF_HPP

View file

@ -137,7 +137,20 @@ namespace sprout {
}
} // namespace fixed
using sprout::fixed::reverse_copy;
template<
typename BidirectionalIterator, typename Result,
typename sprout::enabler_if<!sprout::is_output_iterator<Result>::value>::type = sprout::enabler
>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
reverse_copy(BidirectionalIterator first, BidirectionalIterator last, Result const& result) {
return sprout::fixed::reverse_copy(first, last, result);
}
template<typename Result, typename BidirectionalIterator>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
reverse_copy(BidirectionalIterator first, BidirectionalIterator last) {
return sprout::fixed::reverse_copy<Result>(first, last);
}
} // namespace sprout
#endif // #ifndef SPROUT_ALGORITHM_FIXED_REVERSE_COPY_HPP

View file

@ -17,6 +17,8 @@
#include <sprout/container/indexes.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/iterator/joint_iterator.hpp>
#include <sprout/iterator/type_traits/is_iterator_of.hpp>
#include <sprout/type_traits/enabler_if.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include <sprout/pit/pit.hpp>
#include <sprout/detail/container_complate.hpp>
@ -178,7 +180,20 @@ namespace sprout {
}
} // namespace fixed
using sprout::fixed::rotate_copy;
template<
typename ForwardIterator, typename Result,
typename sprout::enabler_if<!sprout::is_output_iterator<Result>::value>::type = sprout::enabler
>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
rotate_copy(ForwardIterator first, ForwardIterator middle, ForwardIterator last, Result const& result) {
return sprout::fixed::rotate_copy(first, middle, last, result);
}
template<typename Result, typename ForwardIterator>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
rotate_copy(ForwardIterator first, ForwardIterator middle, ForwardIterator last) {
return sprout::fixed::rotate_copy<Result>(first, middle, last);
}
} // namespace sprout
#endif // #ifndef SPROUT_ALGORITHM_FIXED_ROTATE_COPY_HPP

View file

@ -14,6 +14,8 @@
#include <sprout/container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/iterator/unique_iterator.hpp>
#include <sprout/iterator/type_traits/is_iterator_of.hpp>
#include <sprout/type_traits/enabler_if.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include <sprout/pit/pit.hpp>
#include <sprout/detail/container_complate.hpp>
@ -178,7 +180,38 @@ namespace sprout {
}
} // namespace fixed
using sprout::fixed::unique_copy;
template<
typename InputIterator, typename Result,
typename sprout::enabler_if<!sprout::is_output_iterator<Result>::value>::type = sprout::enabler
>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
unique_copy(InputIterator first, InputIterator last, Result const& result) {
return sprout::fixed::unique_copy(first, last, result);
}
template<typename Result, typename InputIterator>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
unique_copy(InputIterator first, InputIterator last) {
return sprout::fixed::unique_copy<Result>(first, last);
}
template<
typename InputIterator, typename Result, typename BinaryPredicate,
typename sprout::enabler_if<!sprout::is_output_iterator<Result>::value>::type = sprout::enabler
>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
unique_copy(InputIterator first, InputIterator last, Result const& result, BinaryPredicate pred) {
return sprout::fixed::unique_copy(first, last, result, pred);
}
template<
typename Result, typename InputIterator, typename BinaryPredicate,
typename sprout::enabler_if<!sprout::is_output_iterator<BinaryPredicate>::value>::type = sprout::enabler
>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
unique_copy(InputIterator first, InputIterator last, BinaryPredicate pred) {
return sprout::fixed::unique_copy<Result>(first, last, pred);
}
} // namespace sprout
#endif // #ifndef SPROUT_ALGORITHM_FIXED_UNIQUE_COPY_HPP