Сообщение константа и не константа одновременно(почти) от 08.05.2015 7:17
Изменено 08.05.2015 7:27 niXman
привет!
есть такой тип:
использовать это дело предполагается так:
как победить?
спасибо.
есть такой тип:
template<typename T>
struct pair {
const char *key;
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
как победить?
спасибо.
константа и не константа одновременно(почти)
привет!
есть такой тип:
использовать это дело предполагается так:
как победить?
спасибо.
есть такой тип:
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
как победить?
спасибо.