clang++ and g++ difference. Who is right ?

Sorry for the previous incomplete post,

I know there is come C++ expert around, so maybe someone may tell me who is right and who is wrong compiling the following code:

---------------- extern.cpp ---------------
#include <stdio.h>

namespace lldb_private { const char *GetVersion(); }

const char * lldb_private::GetVersion() {
  extern const double LLDBVersionNumber;
  static char g_version_string[32];
  if (g_version_string[0] == '\0')
    ::snprintf (g_version_string, sizeof(g_version_string), "LLDB-%g", LLDBVersionNumber);
    return g_version_string;

IIRC clang is correct; see [namespace.def]p6.