Macro do contador do pré-processador

Existe uma maneira de criar umCOUNTER() macro (que segue o padrão C ++ 11/14) que é expandida para um número que aumenta um a cada vezCOUNTER() é invocado?

Eu pensei sobre isso, mas não consegui encontrar uma maneira de fazê-lo funcionar. Não encontrei uma maneira de armazenar "estado" noCOUNTER() macro.

Exemplo:

#define COUNTER() <...> // Implementation goes here...
#define UNIQUE_NAME_1() TEST ## COUNTER()
#define UNIQUE_NAME_2() TEST ## COUNTER()

// Note how the COUNTER() macro can be used with other macros
// (it cannot be implemented with C++ code)

int main() {
    std::cout << STRINGIFY(UNIQUE_NAME_1()) << std::endl;
    std::cout << STRINGIFY(UNIQUE_NAME_2()) << std::endl;
}

Saída esperada:

TEST0 
TEST1    

questionAnswers(1)

yourAnswerToTheQuestion