$ ./a.out
fish: './a.out' terminated by signal SIGSEGV (Address boundary error)
(gdb) bt
#0 btree<int, std::allocator<int> >::Insert (this=0x7fffffffe390, Data=@0x7fffffffe388: 383) at a.cpp:59
#1 0x000055555555537a in main (argc=1, argv=0x7fffffffe488) at a.cpp:121
(gdb) print (*pRoot)->m_pData
$3 = (int *) 0x1
cl_overlay_entities 100
btree() : m_pRoot(nullptr) {};
inside the tree class should fix the use of uninitialized valuenode *m_pRoot = nullptr;
insteaddot -T png
or dot -T svg
also works