Я немного слышал о проблеме ссылки на ссылку и this. Я не очень хорошо разбираюсь в терминологии Комитета C++, но я понимаю, что аннотация «Перемещено в DR» в ссылке означает, что это текущая интерпретация, которой должны придерживаться совместимые со стандартом компиляторы.C++ - экземпляр шаблона со ссылочным типом
У меня есть этот пример кода, который я не могу понять:
template <typename T>
struct C {
void f(T&) { }
void f(const T&) { }
};
int main() {
C<int> x; // OK
C<int&> y; // compile error: f cannot be overloaded
C<const int&> z; // compile error: f cannot be overloaded
}
Я понимаю, ошибка в C<const int&>
случае: используя правила из DR # 106, мы получаем два метода с одной и той же сигнатуры F (Const ИНТ &). То, что я не получаю, это случай C<int&>
: не должен ли он генерировать точно такой же код, как C<int>
(по крайней мере, согласно резолюции Страустрапа)?
Какой компилятор вы используете? –
vs2010 генерирует ту же ошибку (в то время как vs2008 сообщает о недопустимой ошибке ref-to-ref) –
это связано с тем, что динамическое/статическое приведение не допускается со ссылками на типы."'doubl & d = dynamic_cast (someintvariable)'" приводит к 'static_cast': не может преобразовать из 'int' в 'double &' в MSVC –