On Sat, Nov 5, 2016 at 1:00 PM, Robert Ramey wrote:
On 11/5/16 12:44 PM, Зайцев Александр wrote:
For Boost.Algorithm we can remove all std::unary_function and
std::binary_function. I think, we can rewrite sources without these
functions.
I'm guessing that could be done for all the libraries. But would that
permit the usage of the libraries by those who depend upon C++03 compilers?
I don't think there's anything in boost (or the standard library) that
depends specifically on std::unary_function. (except TR1) Here's the
definition:
template
struct unary_function
{
typedef _Arg argument_type;
typedef _Result result_type;
};
template
struct binary_function
{
typedef _Arg1 first_argument_type;
typedef _Arg2 second_argument_type;
typedef _Result result_type;
};
However, I am pretty sure that there are parts of boost and/or the standard
library that depend on the presence of (say) result_type:
For example, I found this in
libs/accumulators/include/boost/accumulators/statistics/kurtosis.hpp:
typedef typename numeric::functional::fdiv::result_type result_type;
The #2 option I suggested would look like this. change:
template<typename T>
struct plus: binary_function
{
T operator() (const T& x, const T& y) { return x + y }
};
to:
template<typename T>
struct plus
{
typedef T first_argument_type;
typedef T second_argument_type;
typedef T result_type;
T operator() (const T& x, const T& y) { return x + y }
};
-- Marshall