How to allow a std:string parameter to be NULL?

c++, std

Solution

std::string has a constructor that takes a const char* parameter. That's constructor is going to crash when you pass NULL to it, and that constructor is called implicitly when you write foo(NULL).

The only solution I can think of is to overload foo

void foo(const std::string& str)
{
  // your function
}

void foo(const char* cstr)
{
  if (cstr == NULL)
    // do something
  else
     foo(std::string(cstr)); // call regular funciton
}

Problem

I have a function `foo(const std::string& str);` that it does crash if you call it using `foo(NULL)`. What can I do to prevent it from crashing?

Original source