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 to foo using in-pl…

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)