Я знаю, что могут быть другие подобные вопросы, но они не совсем ответили на мой вопрос.Is int & foo(); lvalue?
Я просматривал некоторые слайды из лекции о C++
типа дедукции и на одном из них я нашел следующее заявление:
int & foo(); // foo() is lvalue;
Сначала я подумал, что это неправильно - foo
является функция, которую нельзя назначить, это не значение lvalue. Но теперь я думаю, что автор мог иметь что-то другое в виду. А именно, что вызов может быть lvalue, а не самой fuction.
Итак, другие слова:
- является
foo
именующим? - является
foo()
lvalue? - Может ли fuction (не вызов функции) когда-либо назначаться (то есть
foo = something;
)? - «lvalue - это каждый объект/предмет, которому можно назначить» - это утверждение всегда правильное и точное?
Вопрос 4
требует еще нескольких пояснений. С этим я пытаюсь понять, что такое lvalue. Другое определение, которое я видел, гласит: «lvalues имеют адреса хранилища, которые могут быть получены». Я не уверен, что Хранение Адрес точно есть, но взятие нашей функции foo
в качестве примера - мы можем определенно получить адрес этого fuction. В C++
это просто имя функции
foo; // returns the address of funtion 'foo'
Но в то же время я не думаю, что мы когда-либо можно присвоить foo
(вопрос 3
). Итак - это lvalue или нет?
Буду признателен, если вы ответили на все 4 очка. Я отмечаю вопрос как C++
, а не C++11
, так как я считаю, что этот вопрос относится ко всем версиям языка. Однако, если есть какие-либо различия, укажите их.
Возможно, вам будет интересно просмотреть [этот пост] (http://stackoverflow.com/questions/3601602/what-are-rvalues-lvalues-xvalues-glvalues-and-prvalues) – CoryKramer
Я поддержал, потому что вопрос показывает исследовательские усилия, полезен и ясен. – TartanLlama