Considerate questo codice:modello di argomentazione perde un riferimento lvalue, se non utilizzati direttamente
#include <iostream>
#include <type_traits>
using namespace std;
template<typename T_orig> void f(T_orig& a){
a=5;
}
template<typename T_orig, typename T=T_orig&> void g(T a){
a=8;
}
int main() {
int b=3;
f<decltype(b)>(b);
cout<<b<<endl;
g<decltype(b)>(b);
cout<<b<<endl;
return 0;
}
Questo stampa
5
5
Qualcuno può spiegarmi perché nella seconda versione del &
è perduto?
Btw, 'ternary_op' assomiglia molto a' std :: condizionale'. –
Questa è una versione semplificata, fondamentalmente la stessa: http://ideone.com/9DSsfb – mfontanini