1. C++ / Говнокод #16081

    +5

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    #include <iostream>
    using namespace std;
    struct ko{
    	int r;
    } f;
    const ko& taras=f;
    int main() {
    	cout<<
    	is_same<decltype(taras.r), int>::value
    	<<" "<<
    	is_same<decltype((taras.r)), const int &>::value
    	<<endl;
    	return 0;
    }

    What is output you expect? You should answer without looking at ideone link and without using compiler.
    http://ideone.com/5O9vtZ

    Запостил: LispGovno, 30 Мая 2014

    Комментарии (2) RSS

    • The main answer of universe is 42.
      Ответить
    • if e is an unparenthesized id-expression or a class member access (5.2.5), decltype(e) is the type of the entity named by e.
      if e is an lvalue, decltype(e) is T&, where T is the type of e;

      Скобки превращают доступ к полю в l-value expression. Поэтому ссылка. тарас константен, поэтому константная ссылка.

      http://msdn.microsoft.com/en-us/library/dd537655.aspx
      Ответить

    Добавить комментарий