Como evitar que minhas variáveis ​​globais "não usadas" sejam compiladas?

Estou usando a inicialização estática para facilitar o processo de registro de algumas classes com uma fábrica em C ++. Infelizmente, acho que o compilador está otimizando os objetos "não usados" que servem para fazer o trabalho útil em seus construtores. Existe alguma maneira de informar o compilador para não otimizar uma variável global?

class SomeClass {
    public:
        SomeClass() {
            /* do something useful */
        }
};

SomeClass instance;

Meu ponto de interrupção no construtor de SomeClass não é atingido. No meu código real, SomeClass está em um arquivo de cabeçalho e a instância está em um arquivo de origem, mais ou menos sozinho.

EDIT: Como adivinhado por KJAWolf, esse código é realmente compilado em uma biblioteca estática, não o executável. Sua finalidade é registrar alguns tipos também fornecidos pela biblioteca estática com uma lista estática de tipos e seus criadores, para uma fábrica ler na construção. Como esses tipos são fornecidos com o lib, adicionar este código ao executável é indesejável.

Também descobri que, ao mover o código para outro arquivo de origem que contém outro código existente, ele funciona bem. Parece que ter um arquivo puramente constituído por esses objetos globais é o que está causando o problema. É como se essa unidade de tradução fosse totalmente ignorada.

questionAnswers(9)

yourAnswerToTheQuestion