You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

37 lines
613 B

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
struct item {
int data;
item* next;
};
template <typename E>
struct List {
List(E* E::*next_ptr) : head(nullptr), next_ptr(next_ptr) {}
void add(E* e) {
e->*next_ptr = head;
head = e;
}
void add_byref(E& e) {
e.*next_ptr = head;
head = &e;
}
E* head;
E* E::*next_ptr;
};
void skip() { List<item> l(&item::next); }
void noskip(List<item> l) {
item i;
l.add(&i);
l.add_byref(i);
}