Coming top-to-bottom:
List();
Copy constructor (where const & means it takes const lvalue reference):
List( List const & );
Move constructor (where && means it takes non-const rvalue reference):
List( List && );
solved what is the difference between these three constructors?