Gavin Doughtie on Wed, 5 May 2004 18:46:54 -0500 (CDT) |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
[ALACPP] const char* NULL to std::string api |
So an interesting puzzle came up at work today. Say you have an API like so: void doFoo(const char* param) { if (NULL != param) { // do something } } Great. Now say you want to be modern and write the api like so: void doFoo(const std::string& param) { } Now imagine that somebody calls you with a NULL const char* param. std::string tries to implicitly convert that NULL pointer to a std::string, and, if you are lucky and your compiler isn't a leftover from the tech boom like it might be at certain entertainment companies, the string constructor throws a logic_error. There is no way to guard against this except by including a const char* implementation of your interface which does the appropriate checks before forwarding to the std::string implementation. The best I've come up with so far is some nasty boost::preprocessor macro to write the parellel implementation for you. Does anybody have a better idea? _______________________________________________ alacpp mailing list alacpp@xxxxxxxxxxx http://lists.ellipsis.cx/mailman/listinfo/alacpp