- l'elenco
end()
restituisce una copia dell'iteratore passato-end, giusto? - Pertanto,
list.end()
è un valore massimo, giusto? - la funzione -operatore-overloaded per l'elenco iteratore richiede un riferimento non-const, giusto?
- non è possibile associare rvalues a riferimenti non const, giusto?
Quindi, come mai si faperché compila --list.end()?
std::list<int> lst;
// ...
--l.end();`
compilare?
Come correttamente sottolineato, il mio terzo punto non ha necessariamente ragione. Ma allora che ne dici di questo codice che compila anche?
struct A{};
void f(A&)
{
}
A a()
{
return A();
}
int main()
{
f(a());
}
Il terzo punto è sbagliato. – Nawaz
@banuj: Non capisco –
Non sono d'accordo sul fatto che il tuo secondo esempio compili: http://ideone.com/V98wW3 –