@@ -83,38 +83,38 @@ struct binary_operation_obj
8383 using result_type = Result;
8484
8585 template <typename V1 , typename V2 > BOOST_FORCEINLINE
86- result_type operator ()(const std::pair<const V1 *,const V2 *>& p) const {
86+ auto operator ()(const std::pair<const V1 *,const V2 *>& p) const -> result_type {
8787 return apply (*p.first , *p.second , typename views_are_compatible<V1 ,V2 >::type ());
8888 }
8989
9090 template <typename V1 , typename V2 > BOOST_FORCEINLINE
91- result_type operator ()(const V1 & v1, const V2 & v2) const {
91+ auto operator ()(const V1 & v1, const V2 & v2) const -> result_type {
9292 return apply (v1, v2, typename views_are_compatible<V1 ,V2 >::type ());
9393 }
9494
95- result_type operator ()(const error_t &) const { throw std::bad_cast (); }
95+ auto operator ()(const error_t &) const -> result_type { throw std::bad_cast (); }
9696private:
9797
9898 // dispatch from apply overload to a function with distinct name
9999 template <typename V1 , typename V2 >
100100 BOOST_FORCEINLINE
101- result_type apply (V1 const & v1, V2 const & v2, std::false_type) const
101+ auto apply (V1 const & v1, V2 const & v2, std::false_type) const -> result_type
102102 {
103103 return ((const Derived*)this )->apply_incompatible (v1, v2);
104104 }
105105
106106 // dispatch from apply overload to a function with distinct name
107107 template <typename V1 , typename V2 >
108108 BOOST_FORCEINLINE
109- result_type apply (V1 const & v1, V2 const & v2, std::true_type) const
109+ auto apply (V1 const & v1, V2 const & v2, std::true_type) const -> result_type
110110 {
111111 return ((const Derived*)this )->apply_compatible (v1, v2);
112112 }
113113
114114 // function with distinct name - it can be overloaded by subclasses
115115 template <typename V1 , typename V2 >
116116 BOOST_FORCEINLINE
117- result_type apply_incompatible (V1 const & /* v1*/ , V2 const & /* v2*/ ) const
117+ auto apply_incompatible (V1 const & /* v1*/ , V2 const & /* v2*/ ) const -> result_type
118118 {
119119 throw std::bad_cast ();
120120 }
@@ -149,9 +149,10 @@ auto copy(
149149// / \ingroup STLOptimizations
150150// / \brief Copy when both src and dst are interleaved and of the same type can be just memmove
151151template <typename T, typename CS >
152- BOOST_FORCEINLINE boost::gil::pixel<T,CS >*
153- copy (const boost::gil::pixel<T,CS >* first, const boost::gil::pixel<T,CS >* last,
154- boost::gil::pixel<T,CS >* dst) {
152+ BOOST_FORCEINLINE
153+ auto copy (const boost::gil::pixel<T,CS >* first, const boost::gil::pixel<T,CS >* last,
154+ boost::gil::pixel<T,CS >* dst) -> boost::gil::pixel<T,CS>*
155+ {
155156 return (boost::gil::pixel<T,CS >*)std::copy ((unsigned char *)first,(unsigned char *)last, (unsigned char *)dst);
156157}
157158} // namespace std
@@ -168,7 +169,8 @@ namespace std {
168169// / \ingroup STLOptimizations
169170// / \brief Copy when both src and dst are planar pointers is copy for each channel
170171template <typename CS , typename IC1 , typename IC2 > BOOST_FORCEINLINE
171- boost::gil::planar_pixel_iterator<IC2 ,CS > copy (boost::gil::planar_pixel_iterator<IC1 ,CS > first, boost::gil::planar_pixel_iterator<IC1 ,CS > last, boost::gil::planar_pixel_iterator<IC2 ,CS > dst) {
172+ auto copy (boost::gil::planar_pixel_iterator<IC1 ,CS > first, boost::gil::planar_pixel_iterator<IC1 ,CS > last, boost::gil::planar_pixel_iterator<IC2 ,CS > dst) -> boost::gil::planar_pixel_iterator<IC2,CS>
173+ {
172174 boost::gil::gil_function_requires<boost::gil::ChannelsCompatibleConcept<typename std::iterator_traits<IC1 >::value_type,typename std::iterator_traits<IC2 >::value_type>>();
173175 static_for_each (first,last,dst,boost::gil::detail::copy_fn<IC1 ,IC2 >());
174176 return dst+(last-first);
@@ -244,7 +246,7 @@ struct copier_n<iterator_from_2d<IL>,iterator_from_2d<OL>> {
244246};
245247
246248template <typename SrcIterator, typename DstIterator>
247- BOOST_FORCEINLINE DstIterator copy_with_2d_iterators (SrcIterator first, SrcIterator last, DstIterator dst) {
249+ BOOST_FORCEINLINE auto copy_with_2d_iterators (SrcIterator first, SrcIterator last, DstIterator dst) -> DstIterator {
248250 using src_x_iterator = typename SrcIterator::x_iterator;
249251 using dst_x_iterator = typename DstIterator::x_iterator;
250252
@@ -270,9 +272,11 @@ namespace std {
270272// / \ingroup STLOptimizations
271273// / \brief std::copy(I1,I1,I2) with I1 and I2 being a iterator_from_2d
272274template <typename IL , typename OL >
273- BOOST_FORCEINLINE boost::gil::iterator_from_2d<OL > copy1 (boost::gil::iterator_from_2d<IL > first, boost::gil::iterator_from_2d<IL > last, boost::gil::iterator_from_2d<OL > dst) {
275+ BOOST_FORCEINLINE auto copy1 (boost::gil::iterator_from_2d<IL > first, boost::gil::iterator_from_2d<IL > last, boost::gil::iterator_from_2d<OL > dst) -> boost::gil::iterator_from_2d<OL>
276+ {
274277 return boost::gil::detail::copy_with_2d_iterators (first,last,dst);
275278}
279+
276280} // namespace std
277281
278282namespace boost { namespace gil {
@@ -307,13 +311,13 @@ class copy_and_convert_pixels_fn : public binary_operation_obj<copy_and_convert_
307311 copy_and_convert_pixels_fn (CC cc_in) : _cc(cc_in) {}
308312 // when the two color spaces are incompatible, a color conversion is performed
309313 template <typename V1 , typename V2 > BOOST_FORCEINLINE
310- result_type apply_incompatible (const V1 & src, const V2 & dst) const {
314+ auto apply_incompatible (const V1 & src, const V2 & dst) const -> result_type {
311315 copy_pixels (color_converted_view<typename V2 ::value_type>(src,_cc),dst);
312316 }
313317
314318 // If the two color spaces are compatible, copy_and_convert is just copy
315319 template <typename V1 , typename V2 > BOOST_FORCEINLINE
316- result_type apply_compatible (const V1 & src, const V2 & dst) const {
320+ auto apply_compatible (const V1 & src, const V2 & dst) const -> result_type {
317321 copy_pixels (src,dst);
318322 }
319323};
0 commit comments