Use g++ instead of clang
Use the copy and swap design for assignment