{"id":353407,"date":"2024-10-20T00:57:52","date_gmt":"2024-10-20T00:57:52","guid":{"rendered":"https:\/\/pdfstandards.shop\/product\/uncategorized\/bsi-pd-iso-iec-ts-214252017\/"},"modified":"2024-10-26T01:04:52","modified_gmt":"2024-10-26T01:04:52","slug":"bsi-pd-iso-iec-ts-214252017","status":"publish","type":"product","link":"https:\/\/pdfstandards.shop\/product\/publishers\/bsi\/bsi-pd-iso-iec-ts-214252017\/","title":{"rendered":"BSI PD ISO\/IEC TS 21425:2017"},"content":{"rendered":"
[intro.scope]<\/b><\/p>\n
This document describes extensions to the C++ Programming Language (2) that permit operations on ranges of data. These extensions include changes and additions to the existing library facilities as well as the extension of one core language facility. In particular, changes and extensions to the Standard Library include:<\/p>\n
The formulation of the foundational and iterator concept requirements using the syntax of the Concepts TS (2 ).<\/p>\n<\/li>\n
Analogues of the Standard Library algorithms specified in terms of the new concepts.<\/p>\n<\/li>\n
The loosening of the algorithm constraints to permit the use of sentinels<\/i> to denote the end of a range and corresponding changes to algorithm return types where necessary.<\/p>\n<\/li>\n The addition of new concepts describing range<\/i> and view<\/i> abstractions; that is, objects with a begin iterator and an end sentinel.<\/p>\n<\/li>\n New algorithm overloads that take range objects.<\/p>\n<\/li>\n Support of callable objects<\/i> (as opposed to function objects<\/i>) passed as arguments to the algorithms.<\/p>\n<\/li>\n The addition of optional projection<\/i> arguments to the algorithms to permit on-the-fly data transformations.<\/p>\n<\/li>\n Analogues of the iterator primitives and new primitives in support of the addition of sentinels to the library.<\/p>\n<\/li>\n Constrained analogues of the standard iterator adaptors and stream iterators that satisfy the new iterator concepts.<\/p>\n<\/li>\n New iterator adaptors (counted_iterator and common_iterator) and sentinels (unreachable).<\/p>\n<\/li>\n<\/ul>\n Changes to the core language include:<\/p>\n the extension of the range-based for statement to support the new iterator range requirements (10.4).<\/p>\n<\/li>\n<\/ul>\n This document does not specify constrained analogues of other parts of the Standard Library (e.g., the numeric algorithms), nor does it add range support to all the places that could benefit from it (e.g., the containers).<\/p>\n This document does not specify any new range views, actions, or facade or adaptor utilities; all are left as future work.<\/p>\n Programming languages. C++ Extensions for ranges<\/b><\/p>\n\n
PDF Catalog<\/h4>\n
\n
\n PDF Pages<\/th>\n PDF Title<\/th>\n<\/tr>\n \n 2<\/td>\n National foreword <\/td>\n<\/tr>\n \n 3<\/td>\n 70910.pdf <\/td>\n<\/tr>\n \n 5<\/td>\n Contents <\/td>\n<\/tr>\n \n 7<\/td>\n Foreword <\/td>\n<\/tr>\n \n 8<\/td>\n 1 Scope
2 Normative references
3 Terms and definitions <\/td>\n<\/tr>\n\n 9<\/td>\n 4 General principles
4.1 Implementation compliance
4.2 Namespaces, headers, and modifications to standard classes <\/td>\n<\/tr>\n\n 10<\/td>\n 5 Statements
5.1 Iteration statements
5.1.1 The range-based for statement <\/td>\n<\/tr>\n\n 11<\/td>\n 6 Library introduction
6.1 General
6.2 Method of description (Informative) <\/td>\n<\/tr>\n\n 12<\/td>\n 6.2.1 Structure of each clause
6.2.1.1 Elements
6.2.1.2 Summary
6.2.1.3 Requirements <\/td>\n<\/tr>\n\n 13<\/td>\n 6.2.1.4 Detailed specifications
6.2.2 Other conventions
6.2.2.1 Functions within classes
6.2.2.2 Private members
6.3 Library-wide requirements
6.3.1 Library contents and organization
6.3.1.1 Library contents
6.3.2 Headers
6.3.3 Using the library
6.3.3.1 Overview
6.3.3.2 Headers <\/td>\n<\/tr>\n\n 14<\/td>\n 6.3.3.3 Linkage
6.3.4 Constraints on programs
6.3.4.1 Overview
6.3.4.2 Derived classes
6.3.4.3 Other functions
6.3.4.4 Function arguments
6.3.4.5 Library object access
6.3.4.6 Requires paragraph
6.3.4.7 Semantic requirements
6.3.5 Conforming implementations
6.3.5.1 Customization Point Objects <\/td>\n<\/tr>\n\n 15<\/td>\n 7 Concepts library
7.1 General
7.1.1 Equality Preservation <\/td>\n<\/tr>\n\n 16<\/td>\n 7.2 Header <experimental\/ranges\/concepts> synopsis <\/td>\n<\/tr>\n \n 18<\/td>\n 7.3 Core language concepts
7.3.1 General
7.3.2 Concept Same
7.3.3 Concept DerivedFrom <\/td>\n<\/tr>\n\n 19<\/td>\n 7.3.4 Concept ConvertibleTo
7.3.5 Concept CommonReference
7.3.6 Concept Common <\/td>\n<\/tr>\n\n 20<\/td>\n 7.3.7 Concept Integral
7.3.8 Concept SignedIntegral
7.3.9 Concept UnsignedIntegral
7.3.10 Concept Assignable <\/td>\n<\/tr>\n\n 21<\/td>\n 7.3.11 Concept Swappable <\/td>\n<\/tr>\n \n 22<\/td>\n 7.3.12 Concept Destructible
7.3.13 Concept Constructible
7.3.14 Concept DefaultConstructible
7.3.15 Concept MoveConstructible <\/td>\n<\/tr>\n\n 23<\/td>\n 7.3.16 Concept CopyConstructible
7.4 Comparison concepts
7.4.1 General
7.4.2 Concept Boolean <\/td>\n<\/tr>\n\n 24<\/td>\n 7.4.3 Concept EqualityComparable
7.4.4 Concept StrictTotallyOrdered <\/td>\n<\/tr>\n\n 25<\/td>\n 7.5 Object concepts <\/td>\n<\/tr>\n \n 26<\/td>\n 7.5.1 Concept Movable
7.5.2 Concept Copyable
7.5.3 Concept Semiregular
7.5.4 Concept Regular
7.6 Callable concepts
7.6.1 General
7.6.2 Concept Invocable
7.6.3 Concept RegularInvocable <\/td>\n<\/tr>\n\n 27<\/td>\n 7.6.4 Concept Predicate
7.6.5 Concept Relation
7.6.6 Concept StrictWeakOrder <\/td>\n<\/tr>\n\n 28<\/td>\n 8 General utilities library
8.1 General
8.2 Utility components <\/td>\n<\/tr>\n\n 29<\/td>\n 8.2.1 swap
8.2.2 exchange
8.3 Function objects <\/td>\n<\/tr>\n\n 30<\/td>\n 8.3.1 Function template invoke
8.3.2 Comparisons <\/td>\n<\/tr>\n\n 33<\/td>\n 8.3.3 Class identity
8.4 Metaprogramming and type traits
8.4.1 Header <experimental\/ranges\/type_traits> synopsis
8.4.2 Type properties <\/td>\n<\/tr>\n\n 34<\/td>\n 8.4.3 Other transformations <\/td>\n<\/tr>\n \n 37<\/td>\n 8.5 Tagged tuple-like types
8.5.1 General
8.5.2 Class template tagged <\/td>\n<\/tr>\n\n 39<\/td>\n 8.5.3 Tuple-like access to tagged <\/td>\n<\/tr>\n \n 40<\/td>\n 8.5.4 Alias template tagged_pair
8.5.4.1 Tagged pair creation functions
8.5.5 Alias template tagged_tuple <\/td>\n<\/tr>\n\n 41<\/td>\n 8.5.5.1 Tagged tuple creation functions
9 Iterators library
9.1 General
9.2 Header <experimental\/ranges\/iterator> synopsis <\/td>\n<\/tr>\n\n 49<\/td>\n 9.3 Iterator requirements
9.3.1 General <\/td>\n<\/tr>\n\n 50<\/td>\n 9.3.2 Customization points
9.3.2.1 iter_move
9.3.2.2 iter_swap <\/td>\n<\/tr>\n\n 51<\/td>\n 9.3.3 Iterator associated types
9.3.3.1 difference_type
9.3.3.2 value_type <\/td>\n<\/tr>\n\n 52<\/td>\n 9.3.3.3 iterator_category <\/td>\n<\/tr>\n \n 53<\/td>\n 9.3.4 Concept Readable
9.3.5 Concept Writable <\/td>\n<\/tr>\n\n 54<\/td>\n 9.3.6 Concept WeaklyIncrementable
9.3.7 Concept Incrementable
9.3.8 Concept Iterator <\/td>\n<\/tr>\n\n 55<\/td>\n 9.3.9 Concept Sentinel
9.3.10 Concept SizedSentinel
9.3.11 Concept InputIterator <\/td>\n<\/tr>\n\n 56<\/td>\n 9.3.12 Concept OutputIterator
9.3.13 Concept ForwardIterator
9.3.14 Concept BidirectionalIterator <\/td>\n<\/tr>\n\n 57<\/td>\n 9.3.15 Concept RandomAccessIterator
9.4 Indirect callable requirements
9.4.1 General <\/td>\n<\/tr>\n\n 58<\/td>\n 9.4.2 Indirect callables <\/td>\n<\/tr>\n \n 59<\/td>\n 9.4.3 Class template projected
9.5 Common algorithm requirements
9.5.1 General
9.5.2 Concept IndirectlyMovable
9.5.3 Concept IndirectlyCopyable <\/td>\n<\/tr>\n\n 60<\/td>\n 9.5.4 Concept IndirectlySwappable
9.5.5 Concept IndirectlyComparable
9.5.6 Concept Permutable
9.5.7 Concept Mergeable <\/td>\n<\/tr>\n\n 61<\/td>\n 9.5.8 Concept Sortable
9.6 Iterator primitives
9.6.1 Iterator traits <\/td>\n<\/tr>\n\n 62<\/td>\n 9.6.2 Standard iterator traits <\/td>\n<\/tr>\n \n 63<\/td>\n 9.6.3 Standard iterator tags
9.6.4 Iterator operations <\/td>\n<\/tr>\n\n 65<\/td>\n 9.7 Iterator adaptors
9.7.1 Reverse iterators
9.7.1.1 Class template reverse_iterator <\/td>\n<\/tr>\n\n 67<\/td>\n 9.7.1.2 reverse_iterator operations
9.7.1.2.1 reverse_iterator constructor
9.7.1.2.2 reverse_iterator::operator=
9.7.1.2.3 Conversion
9.7.1.2.4 operator*
9.7.1.2.5 operator-> <\/td>\n<\/tr>\n\n 68<\/td>\n 9.7.1.2.6 operator++
9.7.1.2.7 operator–
9.7.1.2.8 operator+
9.7.1.2.9 operator+=
9.7.1.2.10 operator-
9.7.1.2.11 operator-= <\/td>\n<\/tr>\n\n 69<\/td>\n 9.7.1.2.12 operator[]
9.7.1.2.13 operator==
9.7.1.2.14 operator!=
9.7.1.2.15 operator<
9.7.1.2.16 operator>
9.7.1.2.17 operator>=
9.7.1.2.18 operator<= <\/td>\n<\/tr>\n\n 70<\/td>\n 9.7.1.2.19 operator-
9.7.1.2.20 operator+
9.7.1.2.21 iter_move
9.7.1.2.22 iter_swap
9.7.1.2.23 Non-member function make_reverse_iterator()
9.7.2 Insert iterators <\/td>\n<\/tr>\n\n 71<\/td>\n 9.7.2.1 Class template back_insert_iterator
9.7.2.2 back_insert_iterator operations
9.7.2.2.1 back_insert_iterator constructor
9.7.2.2.2 back_insert_iterator::operator=
9.7.2.2.3 back_insert_iterator::operator* <\/td>\n<\/tr>\n\n 72<\/td>\n 9.7.2.2.4 back_insert_iterator::operator++
9.7.2.2.5 back_inserter
9.7.2.3 Class template front_insert_iterator
9.7.2.4 front_insert_iterator operations
9.7.2.4.1 front_insert_iterator constructor
9.7.2.4.2 front_insert_iterator::operator= <\/td>\n<\/tr>\n\n 73<\/td>\n 9.7.2.4.3 front_insert_iterator::operator*
9.7.2.4.4 front_insert_iterator::operator++
9.7.2.4.5 front_inserter
9.7.2.5 Class template insert_iterator
9.7.2.6 insert_iterator operations
9.7.2.6.1 insert_iterator constructor <\/td>\n<\/tr>\n\n 74<\/td>\n 9.7.2.6.2 insert_iterator::operator=
9.7.2.6.3 insert_iterator::operator*
9.7.2.6.4 insert_iterator::operator++
9.7.2.6.5 inserter
9.7.3 Move iterators and sentinels
9.7.3.1 Class template move_iterator <\/td>\n<\/tr>\n\n 76<\/td>\n 9.7.3.2 move_iterator operations
9.7.3.2.1 move_iterator constructors
9.7.3.2.2 move_iterator::operator=
9.7.3.2.3 move_iterator conversion
9.7.3.2.4 move_iterator::operator*
9.7.3.2.5 move_iterator::operator++ <\/td>\n<\/tr>\n\n 77<\/td>\n 9.7.3.2.6 move_iterator::operator–
9.7.3.2.7 move_iterator::operator+
9.7.3.2.8 move_iterator::operator+=
9.7.3.2.9 move_iterator::operator-
9.7.3.2.10 move_iterator::operator-=
9.7.3.2.11 move_iterator::operator[] <\/td>\n<\/tr>\n\n 78<\/td>\n 9.7.3.2.12 move_iterator comparisons
9.7.3.2.13 move_iterator non-member functions <\/td>\n<\/tr>\n\n 79<\/td>\n 9.7.3.3 Class template move_sentinel <\/td>\n<\/tr>\n \n 80<\/td>\n 9.7.3.4 move_sentinel operations
9.7.3.4.1 move_sentinel constructors
9.7.3.4.2 move_sentinel::operator=
9.7.3.4.3 move_sentinel comparisons <\/td>\n<\/tr>\n\n 81<\/td>\n 9.7.3.4.4 move_sentinel non-member functions
9.7.4 Common iterators
9.7.4.1 Class template common_iterator <\/td>\n<\/tr>\n\n 82<\/td>\n 9.7.4.2 common_iterator operations
9.7.4.2.1 common_iterator constructors <\/td>\n<\/tr>\n\n 83<\/td>\n 9.7.4.2.2 common_iterator::operator=
9.7.4.2.3 common_iterator::operator*
9.7.4.2.4 common_iterator::operator-> <\/td>\n<\/tr>\n\n 84<\/td>\n 9.7.4.2.5 common_iterator::operator++
9.7.4.2.6 common_iterator comparisons <\/td>\n<\/tr>\n\n 85<\/td>\n 9.7.4.2.7 iter_move
9.7.4.2.8 iter_swap
9.7.5 Default sentinels
9.7.5.1 Class default_sentinel
9.7.6 Counted iterators
9.7.6.1 Class template counted_iterator <\/td>\n<\/tr>\n\n 87<\/td>\n 9.7.6.2 counted_iterator operations
9.7.6.2.1 counted_iterator constructors <\/td>\n<\/tr>\n\n 88<\/td>\n 9.7.6.2.2 counted_iterator::operator=
9.7.6.2.3 counted_iterator conversion
9.7.6.2.4 counted_iterator count
9.7.6.2.5 counted_iterator::operator*
9.7.6.2.6 counted_iterator::operator++ <\/td>\n<\/tr>\n\n 89<\/td>\n 9.7.6.2.7 counted_iterator::operator–
9.7.6.2.8 counted_iterator::operator+
9.7.6.2.9 counted_iterator::operator+=
9.7.6.2.10 counted_iterator::operator-
9.7.6.2.11 counted_iterator::operator-= <\/td>\n<\/tr>\n\n 90<\/td>\n 9.7.6.2.12 counted_iterator::operator[]
9.7.6.2.13 counted_iterator comparisons <\/td>\n<\/tr>\n\n 91<\/td>\n 9.7.6.2.14 counted_iterator non-member functions <\/td>\n<\/tr>\n \n 92<\/td>\n 9.7.7 Dangling wrapper
9.7.7.1 Class template dangling
9.7.7.2 dangling operations
9.7.7.2.1 dangling constructors
9.7.7.2.2 dangling::get_unsafe
9.7.8 Unreachable sentinel
9.7.8.1 Class unreachable <\/td>\n<\/tr>\n\n 93<\/td>\n 9.7.8.2 unreachable operations
9.7.8.2.1 operator==
9.7.8.2.2 operator!=
9.8 Stream iterators
9.8.1 Class template istream_iterator <\/td>\n<\/tr>\n\n 94<\/td>\n 9.8.1.1 istream_iterator constructors and destructor <\/td>\n<\/tr>\n \n 95<\/td>\n 9.8.1.2 istream_iterator operations <\/td>\n<\/tr>\n \n 96<\/td>\n 9.8.2 Class template ostream_iterator
9.8.2.1 ostream_iterator constructors and destructor <\/td>\n<\/tr>\n\n 97<\/td>\n 9.8.2.2 ostream_iterator operations
9.8.3 Class template istreambuf_iterator <\/td>\n<\/tr>\n\n 98<\/td>\n 9.8.3.1 Class template istreambuf_iterator::proxy
9.8.3.2 istreambuf_iterator constructors <\/td>\n<\/tr>\n\n 99<\/td>\n 9.8.3.3 istreambuf_iterator::operator*
9.8.3.4 istreambuf_iterator::operator++
9.8.3.5 istreambuf_iterator::equal
9.8.3.6 operator==
9.8.3.7 operator!= <\/td>\n<\/tr>\n\n 100<\/td>\n 9.8.4 Class template ostreambuf_iterator
9.8.4.1 ostreambuf_iterator constructors
9.8.4.2 ostreambuf_iterator operations <\/td>\n<\/tr>\n\n 101<\/td>\n 10 Ranges library
10.1 General
10.2 decay_copy
10.3 Header <experimental\/ranges\/range> synopsis <\/td>\n<\/tr>\n\n 102<\/td>\n 10.4 Range access
10.4.1 begin <\/td>\n<\/tr>\n\n 103<\/td>\n 10.4.2 end
10.4.3 cbegin
10.4.4 cend
10.4.5 rbegin <\/td>\n<\/tr>\n\n 104<\/td>\n 10.4.6 rend
10.4.7 crbegin
10.4.8 crend
10.5 Range primitives
10.5.1 size <\/td>\n<\/tr>\n\n 105<\/td>\n 10.5.2 empty
10.5.3 data
10.5.4 cdata
10.6 Range requirements
10.6.1 General <\/td>\n<\/tr>\n\n 106<\/td>\n 10.6.2 Ranges
10.6.3 Sized ranges <\/td>\n<\/tr>\n\n 107<\/td>\n 10.6.4 Views
10.6.5 Bounded ranges
10.6.6 Input ranges <\/td>\n<\/tr>\n\n 108<\/td>\n 10.6.7 Output ranges
10.6.8 Forward ranges
10.6.9 Bidirectional ranges
10.6.10 Random access ranges
11 Algorithms library
11.1 General <\/td>\n<\/tr>\n\n 124<\/td>\n 11.2 Tag specifiers <\/td>\n<\/tr>\n \n 125<\/td>\n 11.3 Non-modifying sequence operations
11.3.1 All of
11.3.2 Any of
11.3.3 None of <\/td>\n<\/tr>\n\n 126<\/td>\n 11.3.4 For each
11.3.5 Find <\/td>\n<\/tr>\n\n 127<\/td>\n 11.3.6 Find end
11.3.7 Find first of
11.3.8 Adjacent find <\/td>\n<\/tr>\n\n 128<\/td>\n 11.3.9 Count
11.3.10 Mismatch <\/td>\n<\/tr>\n\n 129<\/td>\n 11.3.11 Equal
11.3.12 Is permutation
11.3.13 Search <\/td>\n<\/tr>\n\n 130<\/td>\n 11.4 Mutating sequence operations
11.4.1 Copy <\/td>\n<\/tr>\n\n 132<\/td>\n 11.4.2 Move
11.4.3 swap <\/td>\n<\/tr>\n\n 133<\/td>\n 11.4.4 Transform
11.4.5 Replace <\/td>\n<\/tr>\n\n 135<\/td>\n 11.4.6 Fill
11.4.7 Generate
11.4.8 Remove <\/td>\n<\/tr>\n\n 136<\/td>\n 11.4.9 Unique <\/td>\n<\/tr>\n \n 137<\/td>\n 11.4.10 Reverse <\/td>\n<\/tr>\n \n 138<\/td>\n 11.4.11 Rotate
11.4.12 Shuffle <\/td>\n<\/tr>\n\n 139<\/td>\n 11.4.13 Partitions <\/td>\n<\/tr>\n \n 140<\/td>\n 11.5 Sorting and related operations <\/td>\n<\/tr>\n \n 141<\/td>\n 11.5.1 Sorting
11.5.1.1 sort
11.5.1.2 stable_sort
11.5.1.3 partial_sort <\/td>\n<\/tr>\n\n 142<\/td>\n 11.5.1.4 partial_sort_copy
11.5.1.5 is_sorted
11.5.2 Nth element <\/td>\n<\/tr>\n\n 143<\/td>\n 11.5.3 Binary search
11.5.3.1 lower_bound
11.5.3.2 upper_bound <\/td>\n<\/tr>\n\n 144<\/td>\n 11.5.3.3 equal_range
11.5.3.4 binary_search
11.5.4 Merge <\/td>\n<\/tr>\n\n 145<\/td>\n 11.5.5 Set operations on sorted structures
11.5.5.1 includes <\/td>\n<\/tr>\n\n 146<\/td>\n 11.5.5.2 set_union
11.5.5.3 set_intersection <\/td>\n<\/tr>\n\n 147<\/td>\n 11.5.5.4 set_difference
11.5.5.5 set_symmetric_difference <\/td>\n<\/tr>\n\n 148<\/td>\n 11.5.6 Heap operations
11.5.6.1 push_heap
11.5.6.2 pop_heap
11.5.6.3 make_heap <\/td>\n<\/tr>\n\n 149<\/td>\n 11.5.6.4 sort_heap
11.5.6.5 is_heap
11.5.7 Minimum and maximum <\/td>\n<\/tr>\n\n 152<\/td>\n 11.5.8 Lexicographical comparison
11.5.9 Permutation generators <\/td>\n<\/tr>\n\n 153<\/td>\n 12 Numerics library
12.1 Uniform random number generator requirements <\/td>\n<\/tr>\n\n 154<\/td>\n A Compatibility features
A.1 General
A.2 Rvalue range access
A.3 Range-and-a-half algorithms <\/td>\n<\/tr>\n\n 156<\/td>\n B Acknowledgements <\/td>\n<\/tr>\n \n 157<\/td>\n C Compatibility
C.1 C++ and Ranges
C.1.1 Algorithm Return Types
C.1.2 Stronger Constraints
C.1.3 Constrained Functional Objects
C.1.4 Iterators and Default-Constructibility <\/td>\n<\/tr>\n\n 158<\/td>\n C.1.5 iterator_traits cannot be specialized
C.2 Ranges and the Palo Alto TR (N3351)
C.2.1 Sentinels
C.2.2 Invocables and Projections
C.2.3 No Distinct DistanceType Associated Type <\/td>\n<\/tr>\n\n 159<\/td>\n C.2.4 Distance Primitive is O(1) for Random Access Iterators
C.2.5 Output Iterators
C.2.6 No Algorithm Reformulations <\/td>\n<\/tr>\n\n 160<\/td>\n Bibliography <\/td>\n<\/tr>\n \n 161<\/td>\n Index <\/td>\n<\/tr>\n \n 162<\/td>\n Index of library names <\/td>\n<\/tr>\n<\/table>\n","protected":false},"excerpt":{"rendered":" \n\n
\n Published By<\/td>\n Publication Date<\/td>\n Number of Pages<\/td>\n<\/tr>\n \n BSI<\/b><\/a><\/td>\n 2018<\/td>\n 166<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"featured_media":353411,"template":"","meta":{"rank_math_lock_modified_date":false,"ep_exclude_from_search":false},"product_cat":[2641],"product_tag":[],"class_list":{"0":"post-353407","1":"product","2":"type-product","3":"status-publish","4":"has-post-thumbnail","6":"product_cat-bsi","8":"first","9":"instock","10":"sold-individually","11":"shipping-taxable","12":"purchasable","13":"product-type-simple"},"_links":{"self":[{"href":"https:\/\/pdfstandards.shop\/wp-json\/wp\/v2\/product\/353407","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pdfstandards.shop\/wp-json\/wp\/v2\/product"}],"about":[{"href":"https:\/\/pdfstandards.shop\/wp-json\/wp\/v2\/types\/product"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pdfstandards.shop\/wp-json\/wp\/v2\/media\/353411"}],"wp:attachment":[{"href":"https:\/\/pdfstandards.shop\/wp-json\/wp\/v2\/media?parent=353407"}],"wp:term":[{"taxonomy":"product_cat","embeddable":true,"href":"https:\/\/pdfstandards.shop\/wp-json\/wp\/v2\/product_cat?post=353407"},{"taxonomy":"product_tag","embeddable":true,"href":"https:\/\/pdfstandards.shop\/wp-json\/wp\/v2\/product_tag?post=353407"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}