gcc nullptr issue

Estou portando código existente para compilar no gcc 4.7.2 e encontrei um problema estranho com o nullptr. Eu consegui reduzi-lo a um simples caso de teste:

#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 );
}

Compile isso com g ++ test.cpp -o teste -std = c ++ 0x.

A saída que eu esperaria é "Eu estava aqui 1", mas recebo "Original value", indicando que o SetMarker nunca é chamado.

Chamar Test2 ou Test3 fornece a saída esperada.

O código com o qual estou trabalhando usa o padrão visto em Test3 - originalmente sem o elenco na frente do NULL - que deu um erro na conversão inválida de int para char *, então comecei a mudar todos aqueles NULLs para nullptr. Infelizmente, isso simplesmente não se comporta corretamente.

Eu provavelmente sou forçado a mudar o código para usar o padrão no Test2 (que eu prefiro de qualquer maneira), mas estou curioso para saber se isso é um bug no compilador, ou se estou perdendo alguma coisa.

questionAnswers(1)

yourAnswerToTheQuestion