Gcc nullptr problema

Estoy portando el código existente para compilar bajo gcc 4.7.2 y me he encontrado con un problema extraño con nullptr. He logrado reducirlo a un simple caso de prueba:

#include <stdio.h>

const char* g_marker = "Original value";

void SetMarker( const char* s )
{
    g_marker = s;
}

char* Test1()
{
    return SetMarker( "I was here 1" ), nullptr;
}

char* Test2()
{
    SetMarker( "I was here 2" );
    return nullptr;
}

char* Test3()
{
    return SetMarker( "I was here 3"), (char*)NULL;
}

int main()
{
    char* returnValue = Test1();
    printf( "%s\n", g_marker );
}

Compila esto con g ++ test.cpp -o test -std = c ++ 0x.

El resultado que esperaría es "Estaba aquí 1", pero obtengo "Valor original", lo que indica que nunca se llama a SetMarker.

Al llamar a Test2 o Test3 se obtiene el resultado esperado.

El código con el que estoy trabajando utiliza el patrón visto en Test3, originalmente sin el lanzamiento delante del NULL, que dio un error en la conversión no válida de int a char *, así que comencé a cambiar todos esos NULL a nullptr. Desafortunadamente, eso simplemente no se comporta correctamente.

Es probable que me obliguen a cambiar el código para usar el patrón en Test2 (que prefiero de todos modos) pero tengo curiosidad por saber si esto es un error en el compilador o si me falta algo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta