After some change of the code-base I came accross this gotcha:
#include <string>
void test(const std::string& s){
}
int main()
{
test(NULL);
return 0;
}
This throws an exception. Changing to 'nullptr' helps nothing (still no error or warning).
I guess my question is, is there a way to detect or find this error at pre-runtime throughout the sourcecode ? perhaps some compiler warning, etc. (using MSVC VS-2017)
I ended up modifying the basic_string template ala. basic_string(int) = delete;
basic_string(::std::nullptr_t) = delete; - this won't catch all cases but does indeed seem to catch the direct cases at least
std::stringhas acont char*converting constructor so you can't stop it from accepting a null pointer.