File tree 3 files changed +14
-18
lines changed
3 files changed +14
-18
lines changed Original file line number Diff line number Diff line change 9
9
#include < vector>
10
10
11
11
12
- // sample(Vehicle )
13
- class Vehicle {
12
+ // sample(VehicleRef )
13
+ class VehicleRef {
14
14
vtable const * const vptr_;
15
15
void * ref_;
16
16
17
17
public:
18
18
template <typename Any>
19
- Vehicle (Any& vehicle)
19
+ VehicleRef (Any& vehicle)
20
20
: vptr_{&vtable_for<Any>}
21
21
, ref_{&vehicle}
22
22
{ }
@@ -51,12 +51,12 @@ int main() {
51
51
Truck chevrolet{" Chevrolet" , 2015 };
52
52
Plane boeing{" Boeing" , " 747" };
53
53
54
- std::vector<Vehicle > vehicles;
54
+ std::vector<VehicleRef > vehicles;
55
55
vehicles.push_back (audi);
56
56
vehicles.push_back (chevrolet);
57
57
vehicles.push_back (boeing);
58
58
59
- for (Vehicle vehicle : vehicles) {
59
+ for (VehicleRef vehicle : vehicles) {
60
60
vehicle.accelerate ();
61
61
}
62
62
}
Original file line number Diff line number Diff line change 11
11
using namespace dyno ::literals;
12
12
13
13
14
- // sample(Vehicle )
15
- struct Vehicle {
14
+ // sample(VehicleRef )
15
+ struct VehicleRef {
16
16
template <typename Any>
17
- Vehicle (Any& vehicle) : poly_{vehicle} { }
18
- // ^^^^ now a reference
17
+ VehicleRef (Any& vehicle) : poly_{vehicle} { }
18
+ // ^^^^ now a reference
19
19
20
20
void accelerate ()
21
21
{ poly_.virtual_ (" accelerate" _s)(poly_); }
@@ -51,12 +51,12 @@ int main() {
51
51
Truck chevrolet{" Chevrolet" , 2015 };
52
52
Plane boeing{" Boeing" , " 747" };
53
53
54
- std::vector<Vehicle > vehicles;
54
+ std::vector<VehicleRef > vehicles;
55
55
vehicles.push_back (audi);
56
56
vehicles.push_back (chevrolet);
57
57
vehicles.push_back (boeing);
58
58
59
- for (Vehicle vehicle : vehicles) {
59
+ for (VehicleRef vehicle : vehicles) {
60
60
vehicle.accelerate ();
61
61
}
62
62
}
Original file line number Diff line number Diff line change 634
634
### Basically a polymorphic view
635
635
636
636
`` `c++
637
- void process(Vehicle vehicle) {
637
+ void process(VehicleRef vehicle) {
638
638
...
639
639
vehicle.accelerate();
640
640
...
648
648
649
649
-- --
650
650
651
- < ! -- . slide : class = "slide-hidden" -- >
652
-
653
651
### How that 's implemented
654
652
655
- < pre > < code data-sample = 'code/non_owning_storage.cpp#Vehicle ' > </ code > </ pre >
653
+ < pre > < code data-sample = 'code/non_owning_storage.cpp#VehicleRef ' > </ code > </ pre >
656
654
657
655
-- --
658
656
659
- < ! -- . slide : class = "slide-hidden" -- >
660
-
661
657
### With Dyno
662
658
663
- < pre > < code data-sample = 'code/non_owning_storage.dyno.cpp#Vehicle ' > </ code > < / p r e >
659
+ < pre > < code data-sample = 'code/non_owning_storage.dyno.cpp#VehicleRef ' > </ code > < / p r e >
664
660
665
661
=== === === === === === ==
666
662
You can’t perform that action at this time.
0 commit comments