@@ -57,42 +57,42 @@ namespace osmium {
5757 case osmium::item_type::undefined:
5858 break ;
5959 case osmium::item_type::node:
60- handler.osm_object (static_cast <ConstIfConst<TItem, osmium::OSMObject>&>(item));
61- handler.node (static_cast <ConstIfConst<TItem, osmium::Node>&>(item));
60+ std::forward<THandler>( handler) .osm_object (static_cast <ConstIfConst<TItem, osmium::OSMObject>&>(item));
61+ std::forward<THandler>( handler) .node (static_cast <ConstIfConst<TItem, osmium::Node>&>(item));
6262 break ;
6363 case osmium::item_type::way:
64- handler.osm_object (static_cast <ConstIfConst<TItem, osmium::OSMObject>&>(item));
65- handler.way (static_cast <ConstIfConst<TItem, osmium::Way>&>(item));
64+ std::forward<THandler>( handler) .osm_object (static_cast <ConstIfConst<TItem, osmium::OSMObject>&>(item));
65+ std::forward<THandler>( handler) .way (static_cast <ConstIfConst<TItem, osmium::Way>&>(item));
6666 break ;
6767 case osmium::item_type::relation:
68- handler.osm_object (static_cast <ConstIfConst<TItem, osmium::OSMObject>&>(item));
69- handler.relation (static_cast <ConstIfConst<TItem, osmium::Relation>&>(item));
68+ std::forward<THandler>( handler) .osm_object (static_cast <ConstIfConst<TItem, osmium::OSMObject>&>(item));
69+ std::forward<THandler>( handler) .relation (static_cast <ConstIfConst<TItem, osmium::Relation>&>(item));
7070 break ;
7171 case osmium::item_type::area:
72- handler.osm_object (static_cast <ConstIfConst<TItem, osmium::OSMObject>&>(item));
73- handler.area (static_cast <ConstIfConst<TItem, osmium::Area>&>(item));
72+ std::forward<THandler>( handler) .osm_object (static_cast <ConstIfConst<TItem, osmium::OSMObject>&>(item));
73+ std::forward<THandler>( handler) .area (static_cast <ConstIfConst<TItem, osmium::Area>&>(item));
7474 break ;
7575 case osmium::item_type::changeset:
76- handler.changeset (static_cast <ConstIfConst<TItem, osmium::Changeset>&>(item));
76+ std::forward<THandler>( handler) .changeset (static_cast <ConstIfConst<TItem, osmium::Changeset>&>(item));
7777 break ;
7878 case osmium::item_type::tag_list:
79- handler.tag_list (static_cast <ConstIfConst<TItem, osmium::TagList>&>(item));
79+ std::forward<THandler>( handler) .tag_list (static_cast <ConstIfConst<TItem, osmium::TagList>&>(item));
8080 break ;
8181 case osmium::item_type::way_node_list:
82- handler.way_node_list (static_cast <ConstIfConst<TItem, osmium::WayNodeList>&>(item));
82+ std::forward<THandler>( handler) .way_node_list (static_cast <ConstIfConst<TItem, osmium::WayNodeList>&>(item));
8383 break ;
8484 case osmium::item_type::relation_member_list:
8585 case osmium::item_type::relation_member_list_with_full_members:
86- handler.relation_member_list (static_cast <ConstIfConst<TItem, osmium::RelationMemberList>&>(item));
86+ std::forward<THandler>( handler) .relation_member_list (static_cast <ConstIfConst<TItem, osmium::RelationMemberList>&>(item));
8787 break ;
8888 case osmium::item_type::outer_ring:
89- handler.outer_ring (static_cast <ConstIfConst<TItem, osmium::OuterRing>&>(item));
89+ std::forward<THandler>( handler) .outer_ring (static_cast <ConstIfConst<TItem, osmium::OuterRing>&>(item));
9090 break ;
9191 case osmium::item_type::inner_ring:
92- handler.inner_ring (static_cast <ConstIfConst<TItem, osmium::InnerRing>&>(item));
92+ std::forward<THandler>( handler) .inner_ring (static_cast <ConstIfConst<TItem, osmium::InnerRing>&>(item));
9393 break ;
9494 case osmium::item_type::changeset_discussion:
95- handler.changeset_discussion (static_cast <ConstIfConst<TItem, osmium::ChangesetDiscussion>&>(item));
95+ std::forward<THandler>( handler) .changeset_discussion (static_cast <ConstIfConst<TItem, osmium::ChangesetDiscussion>&>(item));
9696 break ;
9797 }
9898 }
@@ -101,23 +101,23 @@ namespace osmium {
101101 inline void apply_item_impl (const osmium::OSMEntity& item, THandler&& handler) {
102102 switch (item.type ()) {
103103 case osmium::item_type::node:
104- handler.osm_object (static_cast <const osmium::OSMObject&>(item));
105- handler.node (static_cast <const osmium::Node&>(item));
104+ std::forward<THandler>( handler) .osm_object (static_cast <const osmium::OSMObject&>(item));
105+ std::forward<THandler>( handler) .node (static_cast <const osmium::Node&>(item));
106106 break ;
107107 case osmium::item_type::way:
108- handler.osm_object (static_cast <const osmium::OSMObject&>(item));
109- handler.way (static_cast <const osmium::Way&>(item));
108+ std::forward<THandler>( handler) .osm_object (static_cast <const osmium::OSMObject&>(item));
109+ std::forward<THandler>( handler) .way (static_cast <const osmium::Way&>(item));
110110 break ;
111111 case osmium::item_type::relation:
112- handler.osm_object (static_cast <const osmium::OSMObject&>(item));
113- handler.relation (static_cast <const osmium::Relation&>(item));
112+ std::forward<THandler>( handler) .osm_object (static_cast <const osmium::OSMObject&>(item));
113+ std::forward<THandler>( handler) .relation (static_cast <const osmium::Relation&>(item));
114114 break ;
115115 case osmium::item_type::area:
116- handler.osm_object (static_cast <const osmium::OSMObject&>(item));
117- handler.area (static_cast <const osmium::Area&>(item));
116+ std::forward<THandler>( handler) .osm_object (static_cast <const osmium::OSMObject&>(item));
117+ std::forward<THandler>( handler) .area (static_cast <const osmium::Area&>(item));
118118 break ;
119119 case osmium::item_type::changeset:
120- handler.changeset (static_cast <const osmium::Changeset&>(item));
120+ std::forward<THandler>( handler) .changeset (static_cast <const osmium::Changeset&>(item));
121121 break ;
122122 default :
123123 throw osmium::unknown_type{};
@@ -128,23 +128,23 @@ namespace osmium {
128128 inline void apply_item_impl (osmium::OSMEntity& item, THandler&& handler) {
129129 switch (item.type ()) {
130130 case osmium::item_type::node:
131- handler.osm_object (static_cast <osmium::OSMObject&>(item));
132- handler.node (static_cast <osmium::Node&>(item));
131+ std::forward<THandler>( handler) .osm_object (static_cast <osmium::OSMObject&>(item));
132+ std::forward<THandler>( handler) .node (static_cast <osmium::Node&>(item));
133133 break ;
134134 case osmium::item_type::way:
135- handler.osm_object (static_cast <osmium::OSMObject&>(item));
136- handler.way (static_cast <osmium::Way&>(item));
135+ std::forward<THandler>( handler) .osm_object (static_cast <osmium::OSMObject&>(item));
136+ std::forward<THandler>( handler) .way (static_cast <osmium::Way&>(item));
137137 break ;
138138 case osmium::item_type::relation:
139- handler.osm_object (static_cast <osmium::OSMObject&>(item));
140- handler.relation (static_cast <osmium::Relation&>(item));
139+ std::forward<THandler>( handler) .osm_object (static_cast <osmium::OSMObject&>(item));
140+ std::forward<THandler>( handler) .relation (static_cast <osmium::Relation&>(item));
141141 break ;
142142 case osmium::item_type::area:
143- handler.osm_object (static_cast <osmium::OSMObject&>(item));
144- handler.area (static_cast <osmium::Area&>(item));
143+ std::forward<THandler>( handler) .osm_object (static_cast <osmium::OSMObject&>(item));
144+ std::forward<THandler>( handler) .area (static_cast <osmium::Area&>(item));
145145 break ;
146146 case osmium::item_type::changeset:
147- handler.changeset (static_cast <osmium::Changeset&>(item));
147+ std::forward<THandler>( handler) .changeset (static_cast <osmium::Changeset&>(item));
148148 break ;
149149 default :
150150 throw osmium::unknown_type{};
@@ -155,20 +155,20 @@ namespace osmium {
155155 inline void apply_item_impl (const osmium::OSMObject& item, THandler&& handler) {
156156 switch (item.type ()) {
157157 case osmium::item_type::node:
158- handler.osm_object (item);
159- handler.node (static_cast <const osmium::Node&>(item));
158+ std::forward<THandler>( handler) .osm_object (item);
159+ std::forward<THandler>( handler) .node (static_cast <const osmium::Node&>(item));
160160 break ;
161161 case osmium::item_type::way:
162- handler.osm_object (item);
163- handler.way (static_cast <const osmium::Way&>(item));
162+ std::forward<THandler>( handler) .osm_object (item);
163+ std::forward<THandler>( handler) .way (static_cast <const osmium::Way&>(item));
164164 break ;
165165 case osmium::item_type::relation:
166- handler.osm_object (item);
167- handler.relation (static_cast <const osmium::Relation&>(item));
166+ std::forward<THandler>( handler) .osm_object (item);
167+ std::forward<THandler>( handler) .relation (static_cast <const osmium::Relation&>(item));
168168 break ;
169169 case osmium::item_type::area:
170- handler.osm_object (item);
171- handler.area (static_cast <const osmium::Area&>(item));
170+ std::forward<THandler>( handler) .osm_object (item);
171+ std::forward<THandler>( handler) .area (static_cast <const osmium::Area&>(item));
172172 break ;
173173 default :
174174 throw osmium::unknown_type{};
@@ -179,20 +179,20 @@ namespace osmium {
179179 inline void apply_item_impl (osmium::OSMObject& item, THandler&& handler) {
180180 switch (item.type ()) {
181181 case osmium::item_type::node:
182- handler.osm_object (item);
183- handler.node (static_cast <osmium::Node&>(item));
182+ std::forward<THandler>( handler) .osm_object (item);
183+ std::forward<THandler>( handler) .node (static_cast <osmium::Node&>(item));
184184 break ;
185185 case osmium::item_type::way:
186- handler.osm_object (item);
187- handler.way (static_cast <osmium::Way&>(item));
186+ std::forward<THandler>( handler) .osm_object (item);
187+ std::forward<THandler>( handler) .way (static_cast <osmium::Way&>(item));
188188 break ;
189189 case osmium::item_type::relation:
190- handler.osm_object (item);
191- handler.relation (static_cast <osmium::Relation&>(item));
190+ std::forward<THandler>( handler) .osm_object (item);
191+ std::forward<THandler>( handler) .relation (static_cast <osmium::Relation&>(item));
192192 break ;
193193 case osmium::item_type::area:
194- handler.osm_object (item);
195- handler.area (static_cast <osmium::Area&>(item));
194+ std::forward<THandler>( handler) .osm_object (item);
195+ std::forward<THandler>( handler) .area (static_cast <osmium::Area&>(item));
196196 break ;
197197 default :
198198 throw osmium::unknown_type{};
0 commit comments