Erros, bugs, perguntas - página 2418

 
Slava:

A passagem de um parâmetro por referência implica que existe uma variável atribuída na memória.

As constantes, por outro lado, não são armazenadas em qualquer lugar, mas são utilizadas directamente.

e o que o impede de criar uma variável temporária?
 
TheXpert:
E o que o impede de criar uma variável temporária?

É isso que eu faço. Não compreendo porque é que os programadores o devem fazer por mim.

 
fxsaber:

É isso que eu faço. Porque é que os criadores deveriam fazê-lo por mim - não compreendo.

Para que a vida se torne mais fácil e para que o mundo do "olá" não se transforme numa confusão? Também não se pode reconhecer a autogeração de construtores/operadores=.
 
fxsaber:

É isso que eu faço. Porque é que os criadores deveriam fazê-lo por mim - não compreendo.

Que bom que os criadores de outras línguas sejam menos categóricos sobre o assunto
 
TheXpert:
Que bom que os criadores de outras línguas sejam menos categóricos sobre o assunto

Nada de categórico. Só não gostaria de desperdiçar recursos na resolução deste tipo de porcaria, que já é insuficiente para fechar mesmo os bugs em tempo útil. Já para não falar das novas funcionalidades. Dos anúncios aos lançamentos beta tornou-se um período muito longo. E é ainda mais longo antes das libertações beta serem lambidas. E não sem a irritante ajuda dos utilizadores do fórum.


É por isso que tais tópicos são vistos como chegando ao fundo das tretas. Quando tantas coisas mais sérias não são feitas.

 
fxsaber:

É por isso que tópicos como este são vistos como chegando ao fundo das tretas. Quando tantas coisas mais sérias não são feitas.

Cada um tem as suas próprias prioridades.

 

A passagem de um parâmetro por referência implica que algum valor será colocado na variável correspondente a fim de utilizar esse valor mais tarde, depois de a função ter sido chamada.

Como pode uma variável temporária ser utilizada se não é o resultado de uma expressão?

 
Slava:

A passagem de um parâmetro por referência implica que algum valor será colocado na variável correspondente a fim de utilizar esse valor mais tarde, depois de a função ter sido chamada.

Como pode uma variável temporária ser utilizada se não é o resultado de uma expressão?

Bem, estas são todas subtilezas. Afinal de contas, os prós já o fizeram. Para prvalue, ocorre uma materialização temporária. A propósito, também não se pode fazer isso

int get();
void fn(const int &);

fn(get()); // error
 
Igor Zakharov:

Este é muito provavelmente o ponto em que outro carácter é acrescentado (porque não todos os 5 desde o início do teste?):

Pedir dados para todas as ferramentas no OnInit, serão carregados imediatamente.

 
Slava:

A passagem de um parâmetro por referência implica que algum valor será colocado na variável correspondente a fim de utilizar esse valor mais tarde, após a função ser chamada.

Como utilizar uma variável temporária, se não é o resultado da expressão?

O que pensa de acrescentar à língua a capacidade de passar um argumento como um valor r? Isto resolveria imediatamente todos os problemas e permitir-lhe-ia criar recipientes universais para qualquer tipo. Em particular, o método acima descrito seria sobrecarregado por valor r:

void push_back(const T &value);
void push_back(const T&&value);

É exactamente assim que é implementado em todos os contentores STL.

E a segunda vantagem: permitirá especificar construtores em movimento. Agora isto também é muito insuficiente, em particular para a implementação de apontadores inteligentes unique_ptr e outras classes, concebidos para monopolizar algum recurso único dentro de si, ou seja, os construtores de cópias habituais são inaceitáveis para eles.