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

    −1

    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
    15. 15
    16. 16
    17. 17
    18. 18
    #include <iostream>
    using namespace std;
    
    auto print(auto arg)
    {
    	return (cout<<arg);
    	//return cout;
    }
    auto print(auto arg, auto... args)
    {
    	return (print(args...)<<arg);
    	//return cout;
    }
    
    int main() {
    	print(1,"ko")<<"ok";
    	return 0;
    }

    https://ideone.com/YvoHi3
    ГЦЦ так и не научился в возвращаемые значения с авто

    Запостил: laMer007, 02 Февраля 2016

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

    • ГЦЦ так и не научился в возвращаемые значения с авто
      Ответить
    • Вообще, авто в параметрах функций запрещено.
      А ещё нельзя возвращать ostream по значению.

      Если это поправить, всё работает: http://ideone.com/TanlLl
      Ответить
      • > Вообще, авто в параметрах функций запрещено.
        Шта? Все компилируется
        https://ideone.com/FKqDfr

        #include <iostream>
        using namespace std;
        
        void print(auto arg)
        {
        	cout<<arg;
        }
        void print(auto arg, auto... args)
        {
        	print(args...);
        	cout<<arg;
        }
        
        int main() {
        	print(1,"ko");
        	return 0;
        }
        Ответить
        • Визуалка и шланг не согласны. Плюс в стандарте я подобного не могу найти. То есть это недоимплеменченое расширение гцц. Неудивительно, что оно не работает.

          http://rextester.com/QQK48781
          http://rextester.com/FCH41455

          EDIT: Судя по всему это куски от Concept TS. Ну, неудивительно, что недоделаная фича не работает.
          Ответить
    • decltype(cout) print (auto arg, auto... args) { ... } и погнали. Зачем пытаться всунуть авто там, где тип всегда один и тот же?
      Ответить
    • > auto print(auto arg, auto... args)
      Следующим шагом можно будет избавиться от слова auto. Один хуй все переменные auto, зачем об этом упоминать...
      Ответить
    • In C++14, you just write auto auto(auto auto) { auto; } The compiler infers the rest from context.
      Ответить

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