Replace some boost with std.

It doesn't help much, but we should still stop using those boost
facilities that are now standard.
This commit is contained in:
Marc Glisse 2019-02-08 16:16:20 +01:00
parent 9fef604bc2
commit 02cfcafb72
1 changed files with 11 additions and 10 deletions

View File

@ -28,6 +28,7 @@
#include <CGAL/transforming_iterator.h> #include <CGAL/transforming_iterator.h>
#include <CGAL/NewKernel_d/store_kernel.h> #include <CGAL/NewKernel_d/store_kernel.h>
#include <CGAL/Dimension.h> #include <CGAL/Dimension.h>
#include <type_traits>
namespace CGAL { namespace CGAL {
namespace CartesianDVectorBase { namespace CartesianDVectorBase {
@ -66,7 +67,7 @@ template<class R_,class Zero_> struct Construct_LA_vector
} }
template<class...U> template<class...U>
typename std::enable_if<Constructible_from_each<RT,U...>::value && typename std::enable_if<Constructible_from_each<RT,U...>::value &&
boost::is_same<Dimension_tag<sizeof...(U)>, Dimension>::value, std::is_same<Dimension_tag<sizeof...(U)>, Dimension>::value,
result_type>::type result_type>::type
operator()(U&&...u)const{ operator()(U&&...u)const{
return typename Constructor::Values()(std::forward<U>(u)...); return typename Constructor::Values()(std::forward<U>(u)...);
@ -74,19 +75,19 @@ template<class R_,class Zero_> struct Construct_LA_vector
//template<class...U,class=typename std::enable_if<Constructible_from_each<RT,U...>::value>::type,class=typename std::enable_if<(sizeof...(U)==static_dim+1)>::type,class=void> //template<class...U,class=typename std::enable_if<Constructible_from_each<RT,U...>::value>::type,class=typename std::enable_if<(sizeof...(U)==static_dim+1)>::type,class=void>
template<class...U> template<class...U>
typename std::enable_if<Constructible_from_each<RT,U...>::value && typename std::enable_if<Constructible_from_each<RT,U...>::value &&
boost::is_same<Dimension_tag<sizeof...(U)-1>, Dimension>::value, std::is_same<Dimension_tag<sizeof...(U)-1>, Dimension>::value,
result_type>::type result_type>::type
operator()(U&&...u)const{ operator()(U&&...u)const{
return Apply_to_last_then_rest()(typename Constructor::Values_divide(),std::forward<U>(u)...); return Apply_to_last_then_rest()(typename Constructor::Values_divide(),std::forward<U>(u)...);
} }
template<class Iter> inline template<class Iter> inline
typename boost::enable_if<is_iterator_type<Iter,std::forward_iterator_tag>,result_type>::type operator() typename std::enable_if_t<is_iterator_type<Iter,std::forward_iterator_tag>::value,result_type> operator()
(Iter f,Iter g,Cartesian_tag t)const (Iter f,Iter g,Cartesian_tag t)const
{ {
return this->operator()((int)std::distance(f,g),f,g,t); return this->operator()((int)std::distance(f,g),f,g,t);
} }
template<class Iter> inline template<class Iter> inline
typename boost::enable_if<is_iterator_type<Iter,std::forward_iterator_tag>,result_type>::type operator() typename std::enable_if_t<is_iterator_type<Iter,std::forward_iterator_tag>::value,result_type> operator()
(int d,Iter f,Iter g,Cartesian_tag)const (int d,Iter f,Iter g,Cartesian_tag)const
{ {
CGAL_assertion(d==std::distance(f,g)); CGAL_assertion(d==std::distance(f,g));
@ -94,28 +95,28 @@ template<class R_,class Zero_> struct Construct_LA_vector
return typename Constructor::Iterator()(d,f,g); return typename Constructor::Iterator()(d,f,g);
} }
template<class Iter> inline template<class Iter> inline
typename boost::enable_if<is_iterator_type<Iter,std::bidirectional_iterator_tag>,result_type>::type operator() typename std::enable_if_t<is_iterator_type<Iter,std::bidirectional_iterator_tag>::value,result_type> operator()
(Iter f,Iter g,Homogeneous_tag)const (Iter f,Iter g,Homogeneous_tag)const
{ {
--g; --g;
return this->operator()((int)std::distance(f,g),f,g,*g); return this->operator()((int)std::distance(f,g),f,g,*g);
} }
template<class Iter> inline template<class Iter> inline
typename boost::enable_if<is_iterator_type<Iter,std::bidirectional_iterator_tag>,result_type>::type operator() typename std::enable_if_t<is_iterator_type<Iter,std::bidirectional_iterator_tag>::value,result_type> operator()
(int d,Iter f,Iter g,Homogeneous_tag)const (int d,Iter f,Iter g,Homogeneous_tag)const
{ {
--g; --g;
return this->operator()(d,f,g,*g); return this->operator()(d,f,g,*g);
} }
template<class Iter> inline template<class Iter> inline
typename boost::enable_if<is_iterator_type<Iter,std::forward_iterator_tag>,result_type>::type operator() typename std::enable_if_t<is_iterator_type<Iter,std::forward_iterator_tag>::value,result_type> operator()
(Iter f,Iter g)const (Iter f,Iter g)const
{ {
// Shouldn't it try comparing dist(f,g) to the dimension if it is known? // Shouldn't it try comparing dist(f,g) to the dimension if it is known?
return this->operator()(f,g,typename R::Rep_tag()); return this->operator()(f,g,typename R::Rep_tag());
} }
template<class Iter> inline template<class Iter> inline
typename boost::enable_if<is_iterator_type<Iter,std::forward_iterator_tag>,result_type>::type operator() typename std::enable_if_t<is_iterator_type<Iter,std::forward_iterator_tag>::value,result_type> operator()
(int d,Iter f,Iter g)const (int d,Iter f,Iter g)const
{ {
return this->operator()(d,f,g,typename R::Rep_tag()); return this->operator()(d,f,g,typename R::Rep_tag());
@ -123,7 +124,7 @@ template<class R_,class Zero_> struct Construct_LA_vector
// Last homogeneous coordinate given separately // Last homogeneous coordinate given separately
template<class Iter,class NT> inline template<class Iter,class NT> inline
typename boost::enable_if<is_iterator_type<Iter,std::forward_iterator_tag>,result_type>::type operator() typename std::enable_if_t<is_iterator_type<Iter,std::forward_iterator_tag>::value,result_type> operator()
(int d,Iter f,Iter g,NT const&l)const (int d,Iter f,Iter g,NT const&l)const
{ {
CGAL_assertion(d==std::distance(f,g)); CGAL_assertion(d==std::distance(f,g));
@ -132,7 +133,7 @@ template<class R_,class Zero_> struct Construct_LA_vector
return typename Constructor::Iterator()(d,CGAL::make_transforming_iterator(f,Divide<FT,NT>(l)),CGAL::make_transforming_iterator(g,Divide<FT,NT>(l))); return typename Constructor::Iterator()(d,CGAL::make_transforming_iterator(f,Divide<FT,NT>(l)),CGAL::make_transforming_iterator(g,Divide<FT,NT>(l)));
} }
template<class Iter,class NT> inline template<class Iter,class NT> inline
typename boost::enable_if<is_iterator_type<Iter,std::forward_iterator_tag>,result_type>::type operator() typename std::enable_if_t<is_iterator_type<Iter,std::forward_iterator_tag>::value,result_type> operator()
(Iter f,Iter g,NT const&l)const (Iter f,Iter g,NT const&l)const
{ {
return this->operator()((int)std::distance(f,g),f,g,l); return this->operator()((int)std::distance(f,g),f,g,l);