Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
'parameter': não é possível usar o endereço de um parâmetro de modelo
Observações
Você não pode usar o endereço de um parâmetro de modelo, a menos que ele seja um lvalue. Os parâmetros de tipo não são lvalues porque não têm endereço. Valores não tipo em listas de parâmetros de modelo que não são lvalues também não têm um endereço.
Example
Este é um exemplo de código que causa o erro do compilador C2891, pois o valor passado como parâmetro de modelo é uma cópia gerada pelo compilador do argumento de modelo.
template <int i> int* f() { return &i; }
É possível usar o endereço de parâmetros de modelo que são lvalues, como tipos de referência.
template <int& r> int* f() { return &r; }
Para corrigir esse erro, não use o endereço de um parâmetro de modelo, a menos que seja um lvalue.