From c16e4f046b48644adfe7c08d7aae22ffc0c39069 Mon Sep 17 00:00:00 2001 From: denzor200 Date: Sat, 6 Nov 2021 20:09:19 +0400 Subject: [PATCH 1/2] [transform_view_ext] Updated docs --- doc/sequence.qbk | 4 --- doc/view.qbk | 65 +++--------------------------------------------- 2 files changed, 4 insertions(+), 65 deletions(-) diff --git a/doc/sequence.qbk b/doc/sequence.qbk index 554d951f..b193b8e9 100644 --- a/doc/sequence.qbk +++ b/doc/sequence.qbk @@ -133,7 +133,6 @@ For any Forward Sequence s the following invariants always hold: * __transform_view__ * __reverse_view__ * __zip_view__ -* __identity_view__ [endsect] @@ -202,7 +201,6 @@ are not defined in __forward_sequence__. * __iterator_range__ (where adapted sequence is a Bidirectional Sequence) * __transform_view__ (where adapted sequence is a Bidirectional Sequence) * __zip_view__ (where adapted sequences are models of Bidirectional Sequence) -* __identity_view__ (where adapted sequence is a Bidirectional Sequence) [endsect] @@ -291,7 +289,6 @@ are not defined in __bidirectional_sequence__. * __iterator_range__ (where adapted sequence is a Random Access Sequence) * __transform_view__ (where adapted sequence is a Random Access Sequence) * __zip_view__ (where adapted sequences are models of Random Access Sequence) -* __identity_view__ (where adapted sequence is a Random Access Sequence) [endsect] @@ -364,7 +361,6 @@ you can use `__result_of_value_at_key__`.] * __joint_view__ (where adapted sequences are __associative_sequence__\ s and __forward_sequence__\ s) * __reverse_view__ (where adapted sequence is an __associative_sequence__ and a __bidirectional_sequence__) * __transform_view__ (where adapted sequence is an __associative_sequence__ and a __forward_sequence__) -* __identity_view__ (where adapted sequence is an __associative_sequence__ and a __forward_sequence__) [endsect] diff --git a/doc/view.qbk b/doc/view.qbk index a3ad4d09..6caa33fc 100644 --- a/doc/view.qbk +++ b/doc/view.qbk @@ -1,7 +1,6 @@ [/============================================================================== Copyright (C) 2001-2011 Joel de Guzman Copyright (C) 2006 Dan Marsden - Copyright (c) 2022 Denis Mikhailov Use, modification and distribution is subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at @@ -361,10 +360,10 @@ given a binary function object or function pointer. [heading Model of] -* __forward_sequence__, __bidirectional_sequence__ or -__random_access_sequence__ depending on the traversal characteristics (see -__traversal_concept__) of its underlying sequence or sequences. -* __associative_sequence__ if underlying sequence implements the __associative_sequence__ model(available only with unary version of `transform_view`). +* A model of __forward_sequence__ if `Sequence` is a __forward_sequence__ +else, __bidirectional_sequence__ if `Sequence` is a __bidirectional_sequence__ +else, __random_access_sequence__ if `Sequence` is a __random_access_sequence__. +* __associative_sequence__ if `Sequence` implements the __associative_sequence__ model. [variablelist Notation [[`TV`] [A `transform_view` type]] @@ -665,60 +664,4 @@ defined in __forward_sequence__. [endsect] -[section identity_view] - -[heading Description] - -`identity_view` presents underlying sequence unchanged. - -[heading Header] - - #include - #include - -[heading Synopsis] - - template - struct identity_view; - -[heading Template parameters] - -[table - [[Parameter] [Description] [Default]] - [[`Sequence`] [A __forward_sequence__] []] -] - -[heading Model of] - -* A model of __forward_sequence__ if `Sequence` is a __forward_sequence__ else, __bidirectional_sequence__ if `Sequence` is a __bidirectional_sequence__ -else, __random_access_sequence__ if `Sequence` is a __random_access_sequence__. -* __associative_sequence__ if `Sequence` implements the __associative_sequence__ model. - -[variablelist Notation - [[`IV`] [An `identity_view` type]] - [[`s`] [An instance of `Sequence`]] - [[`iv`, `iv2`] [Instances of `identity_view`]] -] - -[heading Expression Semantics] - -Semantics of an expression is defined only where it differs from, or is not -defined in the implemented models. - -[table - [[Expression] [Semantics]] - [[`IV(s)`] [Creates an `identity_view` given sequence, `s`.]] - [[`IV(iv)`] [Copy constructs an `identity_view` from another `identity_view`, `iv`.]] - [[`iv = iv2`] [Assigns to an `identity_view`, `iv`, from another `identity_view`, `iv2`.]] -] - -[heading Example] - typedef __vector__ vector_type; - vector_type vec(2, 5, 3.3); - - __identity_view__ identity(vec); - std::cout << identity << std::endl; // (2 5 3.3) - -[endsect] - [endsect] From 360dd957f279b08c90c90e43a7222eaad685d26c Mon Sep 17 00:00:00 2001 From: denzor200 Date: Sun, 9 Jan 2022 16:34:07 +0400 Subject: [PATCH 2/2] [transform_view_ext] Unary transform_view is an Associative Sequence now --- doc/view.qbk | 1 + .../transform_view/detail/deref_data_impl.hpp | 5 ----- .../transform_view/transform_view_iterator.hpp | 15 ++++++--------- 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/doc/view.qbk b/doc/view.qbk index e65ac630..d99b325f 100644 --- a/doc/view.qbk +++ b/doc/view.qbk @@ -363,6 +363,7 @@ given a binary function object or function pointer. * __forward_sequence__, __bidirectional_sequence__ or __random_access_sequence__ depending on the traversal characteristics (see __traversal_concept__) of its underlying sequence or sequences. +* __associative_sequence__ if underlying sequence implements the __associative_sequence__ model(available only with unary version of `transform_view`). [variablelist Notation [[`TV`] [A `transform_view` type]] diff --git a/include/boost/fusion/view/transform_view/detail/deref_data_impl.hpp b/include/boost/fusion/view/transform_view/detail/deref_data_impl.hpp index 83ea236a..3eb325a4 100644 --- a/include/boost/fusion/view/transform_view/detail/deref_data_impl.hpp +++ b/include/boost/fusion/view/transform_view/detail/deref_data_impl.hpp @@ -10,11 +10,6 @@ #include #include #include -#include -#include -#include -#include -#include namespace boost { namespace fusion { diff --git a/include/boost/fusion/view/transform_view/transform_view_iterator.hpp b/include/boost/fusion/view/transform_view/transform_view_iterator.hpp index ba5b7c9b..071cba8e 100644 --- a/include/boost/fusion/view/transform_view/transform_view_iterator.hpp +++ b/include/boost/fusion/view/transform_view/transform_view_iterator.hpp @@ -23,11 +23,6 @@ #include #include -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - namespace boost { namespace fusion { // Unary Version @@ -49,6 +44,9 @@ namespace boost { namespace fusion first_type first; transform_type f; + + // silence MSVC warning C4512: assignment operator could not be generated + BOOST_DELETED_FUNCTION(transform_view_iterator& operator= (transform_view_iterator const&)) }; // Binary Version @@ -73,13 +71,12 @@ namespace boost { namespace fusion first1_type first1; first2_type first2; transform_type f; + + // silence MSVC warning C4512: assignment operator could not be generated + BOOST_DELETED_FUNCTION(transform_view_iterator2& operator= (transform_view_iterator2 const&)) }; }} -#ifdef _MSC_VER -# pragma warning(pop) -#endif - #ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408 namespace std {