проблема с gcc nullptr

Я портирую существующий код для компиляции в gcc 4.7.2 и столкнулся со странной проблемой с nullptr. Мне удалось свести это к простому тестовому примеру:

#include 

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

Скомпилируйте это с помощью g ++ test.cpp -o test -std = c ++ 0x.

Вывод, на который я бы рассчитывал:Я был здесь 1 ", но я получаюИсходное значение », указывая, что SetMarker никогда не вызывается.

Вызов либо Test2, либо Test3 дает ожидаемый результат.

Код яПри работе с m используется шаблон, показанный в Test3 - изначально без приведения перед NULL - который выдал ошибку при недопустимом преобразовании из int в char *, поэтому я начал изменять все эти NULL на nullptr. К сожалению, это просто неЯ веду себя правильно.

Я, вероятно, вынужден изменить код для использования шаблона в Test2 (который я предпочитаю в любом случае), но ямне интересно знать, если это ошибка в компиляторе, или если яЯ что-то упустил.

Ответы на вопрос(1)

Ваш ответ на вопрос