É permitido a um compilador / vinculador C ++ remover métodos não utilizados?

Um compilador ou vinculador C ++ (por qualquer padrão C ++) pode remover um método não utilizado? Os compiladores parecem ter permissão para remover funções estáticas não utilizadas, os vinculadores têm permissão para remover funções não utilizadas. Mas não encontrei informações sobre o que parece para métodos de classes. Quando o método é virtual, isso fica realmente interessante.