Passando para um argumento de referência por valor

Considere este programa simples:

vector<int> foo = {0, 42, 0, 42, 0, 42};
replace(begin(foo), end(foo), foo.front(), 13);

for(const auto& i : foo) cout << i << '\t';

Quando escrevi, esperava obter:

13 42 13 42 13 42

Mas, em vez disso, obtive:

13 42 0 42 0 42

O problema, claro, é quereplace&nbsp;leva os últimos 2 parâmetros por referência. Portanto, se algum deles estiver na faixa sendo operada, os resultados poderão ser inesperados. Eupode&nbsp;resolva isso adicionando uma variável temporária:

vector<int> foo = {0, 42, 0, 42, 0, 42};
const auto temp = foo.front();
replace(begin(foo), end(foo), temp, 13);

for(const auto& i : foo) cout << i << '\t';

Eu sei que o C ++ 11 nos deu todos os tipos de ferramentas de tipo. É possível que eu possa simplesmente forçar esse valor a um tipo sem referência e passar esse inline, sem criar o temporário?