привет!
есть такой тип:
template<typename T>
struct pair {
const char *key; // никогда не изменяется, назначается только при инициализации 'pair'
const T &val;
};
template<typename T>
void set(const pair<T> &pair) {
// тут все хорошо, используем 'pair.key' и 'pair.val'
}
template<typename T>
void get(pair<T> &pair) {
// тут все плохо, ибо 'pair.val' - константная ссылка
}
использовать это дело предполагается так:
pair<int> pi{"int", 33};
set(pair<int>{"int", 33});
set(pi);
////////////////////////////////
get(pi); // читаем в 'pair<int>'
int rint=0;
get(pair<int>{"int", pint}); // читаем в 'pint' являющийся lvalue, 'pair<int>' же - rvalue
как победить?
спасибо.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)