Skip to main content


Showing posts from July, 2007

const overload functions taking char pointers

Always have two overloaded versions of functions that take char * and const char * parameters. Declare (but don't define if not needed) a function that takes const char* as a parameter when you have defined a function that accepts a non-const char* as a parameter. #include <iostream> #include <iomanip> static void foo (char *s) { std::cout << "non-const " << std::hex << static_cast <void *>(s) << std::endl; } static void foo (char const *s) { std::cout << "const " << std::hex << static_cast <void const *>(s) << std::endl; } int main (void) { char * c1 = "Literal String 1"; char const * c2 = "Literal String 1"; foo (c1); foo (c2); foo ("Literal String 1"); //*c1 = 'l'; // This will cause a seg-fault on Linux. std::cout << c2 << std::endl; return 0; } Because of default conversion rule from string literal to char *, the call

Future of C++ track @ ACCU

Recently held ACCU 2007 conference had a track dedicated to C++ called: Future of C++ Track. I have listed the presentations in that track and some other related presentations for a quick reference. * An Outline of C++0x (Bjarne Stroustrup) * Generalizing Constant Expressions in C++ (Jens Maurer) * C++0x Initilaisation: Lists and a Uniform Syntax (Bjarne Stroustrup) * An Introduction to the Rvalue Reference in C++0x (Howard Hinnant) * C++ has no useful purpose (Russel Winder) * C++ Modules (David Vandevoorde) * Support for Numerical Programming in C++ (Walter Brown) * C++ Threads (Lawrence Crowl) * Standard Library report (Alisdair Meredith) * Concepts: An Introduction to Concepts in C++0x (Doug Gregor) ( OOPSLA06 paper )