fork(1) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. template<typename T>
  5. struct Node {
  6. Node() { cout << this << ": created w/ default" << endl; }
  7.  
  8. Node(const T &value, Node<T> *next = nullptr)
  9. : value(value), next(next)
  10. {
  11. cout << this << ": created w/ value" << endl;
  12. }
  13.  
  14. ~Node() { cout << this << ": destroyed" << endl; }
  15.  
  16. T value{};
  17. Node<T> *next = nullptr;
  18. };
  19.  
  20. int main() {
  21. Node<int> nodes[4];
  22.  
  23. Node<int> *node4 = &nodes[3];
  24. *node4 = Node<int>(4);
  25. Node<int> *node3 = &nodes[2];
  26. *node3 = Node<int>(3, node4);
  27. Node<int> *node2 = &nodes[1];
  28. *node2 = Node<int>(2, node3);
  29. Node<int> *LL1 = &nodes[0];
  30. *LL1 = Node<int>(1, node2);
  31.  
  32. for(auto *curr = LL1; curr != nullptr; curr = curr->next) {
  33. cout << curr->value << " ";
  34. }
  35. cout << endl;
  36.  
  37. return 0;
  38. }
Success #stdin #stdout 0.01s 5476KB
stdin
Standard input is empty
stdout
0x7fff0ee7ad50: created w/ default
0x7fff0ee7ad60: created w/ default
0x7fff0ee7ad70: created w/ default
0x7fff0ee7ad80: created w/ default
0x7fff0ee7ad10: created w/ value
0x7fff0ee7ad10: destroyed
0x7fff0ee7ad20: created w/ value
0x7fff0ee7ad20: destroyed
0x7fff0ee7ad30: created w/ value
0x7fff0ee7ad30: destroyed
0x7fff0ee7ad40: created w/ value
0x7fff0ee7ad40: destroyed
1 2 3 4 
0x7fff0ee7ad80: destroyed
0x7fff0ee7ad70: destroyed
0x7fff0ee7ad60: destroyed
0x7fff0ee7ad50: destroyed