Os compiladores utilizam uma lista de categorias para determinar as regras à serem seguidas ao realizar operações em objetos temporários.
Um lvalue (locator value) representa um objeto que ocupa uma posição identificavel na memória, por exclusão um rvalue é um objeto que não ocupa uma posição identificavel em memória
Determina a identidade de um objeto, tudo que podemos contruir uma referencia.
Inicializa um objeto ou um campo de bits ou calcula o valor do operando de um operador, conforme especificado pelo contexto no qual ele aparece.