A B-Tree implementation using smart pointers