Replace NULL with nullptr
From the cpp core guidelines: https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-nullptr
**Reason**
Readability. Minimize surprises: `nullptr` cannot be confused with an `int`. `nullptr` also has a well-specified (very restrictive) type, and thus works in more scenarios where type deduction might do the wrong thing on `NULL` or `0`.
Consider:
```cpp
void f(int);
void f(char*);
f(0); // call f(int)
f(nullptr); // call f(char*)
```
issue