Кресты / Говнокод #19517 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
__fastcall OpenArray(T arg0, T arg1, T arg2, T arg3, T arg4, T arg5, T arg6,
				 T arg7, T arg8, T arg9, T arg10, T arg11, T arg12,
				 T arg13, T arg14, T arg15, T arg16, T arg17, T arg18)
	  {
		Array = new T[Count = 19];
		Array[0] = arg0;
		Array[1] = arg1;
		Array[2] = arg2;
		Array[3] = arg3;
		Array[4] = arg4;
		Array[5] = arg5;
		Array[6] = arg6;
		Array[7] = arg7;
		Array[8] = arg8;
		Array[9] = arg9;
		Array[10] = arg10;
		Array[11] = arg11;
		Array[12] = arg12;
		Array[13] = arg13;
		Array[14] = arg14;
		Array[15] = arg15;
		Array[16] = arg16;
		Array[17] = arg17;
		Array[18] = arg18;
	  }

Старый недобрый C++ Builder. Выше по коду еще 17 таких же конструкторов.

Запостил: Vindicar Vindicar, (Updated )

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

        • Вообще, это кааааакбы оправданно.
          Этот самый OpenArray чаще всего используется в паре с вариантным типом для аналога sprintf(), так что ему придется принимать параметры разных типов. Таким образом, обычный метод создания variadic functions тут не прокатит...
          Но все равно выглядит как говно.
          Ответить
          • variadic template != variadic function

            P.S. Ну а вообще - в нынешних крестах вместо этого сраного OpenArray можно std::initializer_list заюзать...
            MyPrintf("%d %s\n", {42, "hui"});
            Ответить
            • std::initializer_list не получится. Это гомогенная коллекция. Разные типы не пихаются.
              Ответить
              • > Разные типы не пихаются.
                Ты не поверишь, но...

                http://ideone.com/h6HW4I

                У этих списков, емнип, вообще никакого типа нету пока они не попадут в std::initializer_list<T> с нужным тебе T.
                Ответить
                • Ну так то да. Но в функцию так разные типы, чтобы они остались разными не передать. Разве что как какой нибудь boost::any или boost::variant. any для printf-подобной функции перебор, но variant учитывая ограниченность возможных типов — вполне.
                  Ответить
                  • Ну так то да. Но в функцию так разные типы, чтобы они остались разными не передать. Разве что как какой нибудь boost::any или boost::variant. any для printf-подобной функции перебор, но variant учитывая ограниченность возможных типов — вполне.
                    Ответить
                • variadic template != variadic function<br />
                  <br />
                  P.S. Ну а вообще - в нынешних крестах вместо этого сраного OpenArray можно std::initializer_list заюзать...<pre><code class="">MyPrintf("%d %s\n", {42, "hui"});</code></pre>
                  Ответить
                  • variadic template != variadic functionbr /
                    br /
                    P.S. Ну а вообще - в нынешних крестах вместо этого сраного OpenArray можно std::initializer_list заюзать...precode class=MyPrintf(&quot;%d %s\n&quot;, {42, &quot;hui&quot;});/code/pre
                    Ответить
                • Разные типы не пихаются.
                  Ты не поверишь, но...

                  http://ideone.com/h6HW4I

                  У этих списков, емнип, вообще никакого типа нету пока они не попадут в std::initializer_listT с нужным тебе T.
                  Ответить
                • > Разные типы не пихаются.<br />
                  Ты не поверишь, но...<br />
                  <br />
                  http://ideone.com/h6HW4I<br />
                  <br />
                  У этих списков, емнип, вообще никакого типа нету пока они не попадут в std::initializer_list<T> с нужным тебе T.
                  Ответить
                • > Разные типы не пихаются.<br />
                  Ты не поверишь, но...<br />
                  <br />
                  http://ideone.com/h6HW4I<br />
                  <br />
                  У этих списков, емнип, вообще никакого типа нету пока они не попадут в std::initializer_list<T> с нужным тебе T.
                  Ответить
                • > Разные типы не пихаются.<br />
                  Ты не поверишь, но...<br />
                  <br />
                  http://ideone.com/h6HW4I<br />
                  <br />
                  У этих списков, емнип, вообще никакого типа нету пока они не попадут в std::initializer_list<T> с нужным тебе T.
                  Ответить
                • > Разные типы не пихаются.<br />
                  Ты не поверишь, но...<br />
                  <br />
                  http://ideone.com/h6HW4I<br />
                  <br />
                  У этих списков, емнип, вообще никакого типа нету пока они не попадут в std::initializer_list<T> с нужным тебе T.
                  Ответить
                • > Разные типы не пихаются.<br />
                  Ты не поверишь, но...<br />
                  <br />
                  http://ideone.com/h6HW4I<br />
                  <br />
                  У этих списков, емнип, вообще никакого типа нету пока они не попадут в std::initializer_list<T> с нужным тебе T.
                  Ответить
                • > Разные типы не пихаются.<br />
                  Ты не поверишь, но...<br />
                  <br />
                  http://ideone.com/h6HW4I<br />
                  <br />
                  У этих списков, емнип, вообще никакого типа нету пока они не попадут в std::initializer_list<T> с нужным тебе T.
                  Ответить
                • > Разные типы не пихаются.<br />
                  Ты не поверишь, но...<br />
                  <br />
                  http://ideone.com/h6HW4I<br />
                  <br />
                  У этих списков, емнип, вообще никакого типа нету пока они не попадут в std::initializer_list<T> с нужным тебе T.
                  Ответить
                • > Разные типы не пихаются.<br />
                  Ты не поверишь, но...<br />
                  <br />
                  http://ideone.com/h6HW4I<br />
                  <br />
                  У этих списков, емнип, вообще никакого типа нету пока они не попадут в std::initializer_list<T> с нужным тебе T.
                  Ответить
                • > Разные типы не пихаются.<br />
                  Ты не поверишь, но...<br />
                  <br />
                  http://ideone.com/h6HW4I<br />
                  <br />
                  У этих списков, емнип, вообще никакого типа нету пока они не попадут в std::initializer_list<T> с нужным тебе T.
                  Ответить
                • > Разные типы не пихаются.<br />
                  Ты не поверишь, но...<br />
                  <br />
                  http://ideone.com/h6HW4I<br />
                  <br />
                  У этих списков, емнип, вообще никакого типа нету пока они не попадут в std::initializer_list<T> с нужным тебе T.
                  Ответить
                • > Разные типы не пихаются.<br />
                  Ты не поверишь, но...<br />
                  <br />
                  http://ideone.com/h6HW4I<br />
                  <br />
                  У этих списков, емнип, вообще никакого типа нету пока они не попадут в std::initializer_list<T> с нужным тебе T.
                  Ответить
              • std::initializer_list не получится. Это гомогенная коллекция. Разные типы не пихаются.
                Ответить
            • variadic template != variadic function

              P.S. Ну а вообще - в нынешних крестах вместо этого сраного OpenArray можно std::initializer_list заюзать...
              MyPrintf(%d %s\n, {42, hui});
              Ответить
            • variadic template != variadic function<br />
              <br />
              P.S. Ну а вообще - в нынешних крестах вместо этого сраного OpenArray можно std::initializer_list заюзать...
              MyPrintf("%d %s\n", {42, "hui"});
              Ответить
            • variadic template != variadic function<br />
              <br />
              P.S. Ну а вообще - в нынешних крестах вместо этого сраного OpenArray можно std::initializer_list заюзать...
              MyPrintf("%d %s\n", {42, "hui"});
              Ответить
            • variadic template != variadic function<br />
              <br />
              P.S. Ну а вообще - в нынешних крестах вместо этого сраного OpenArray можно std::initializer_list заюзать...
              MyPrintf("%d %s\n", {42, "hui"});
              Ответить
            • variadic template != variadic function<br />
              <br />
              P.S. Ну а вообще - в нынешних крестах вместо этого сраного OpenArray можно std::initializer_list заюзать...
              MyPrintf("%d %s\n", {42, "hui"});
              Ответить
            • variadic template != variadic function<br />
              <br />
              P.S. Ну а вообще - в нынешних крестах вместо этого сраного OpenArray можно std::initializer_list заюзать...
              MyPrintf("%d %s\n", {42, "hui"});
              Ответить
            • variadic template != variadic function<br />
              <br />
              P.S. Ну а вообще - в нынешних крестах вместо этого сраного OpenArray можно std::initializer_list заюзать...
              MyPrintf("%d %s\n", {42, "hui"});
              Ответить
            • variadic template != variadic function<br />
              <br />
              P.S. Ну а вообще - в нынешних крестах вместо этого сраного OpenArray можно std::initializer_list заюзать...
              MyPrintf("%d %s\n", {42, "hui"});
              Ответить
            • variadic template != variadic function<br />
              <br />
              P.S. Ну а вообще - в нынешних крестах вместо этого сраного OpenArray можно std::initializer_list заюзать...
              MyPrintf("%d %s\n", {42, "hui"});
              Ответить
            • variadic template != variadic function<br />
              <br />
              P.S. Ну а вообще - в нынешних крестах вместо этого сраного OpenArray можно std::initializer_list заюзать...
              MyPrintf("%d %s\n", {42, "hui"});
              Ответить
            • variadic template != variadic function<br />
              <br />
              P.S. Ну а вообще - в нынешних крестах вместо этого сраного OpenArray можно std::initializer_list заюзать...
              MyPrintf("%d %s\n", {42, "hui"});
              Ответить
            • variadic template != variadic function<br />
              <br />
              P.S. Ну а вообще - в нынешних крестах вместо этого сраного OpenArray можно std::initializer_list заюзать...
              MyPrintf("%d %s\n", {42, "hui"});
              Ответить
          • В очень грубом приближении (по-хорошему надо аккуратно зафорвардить аргументы):
            template <typename... Args>
            OpenArray(Args... args) :
                Count(sizeof...(args)),
                Array(new T[sizeof...(args)] {T(args)...})
            {
            }
            Ответить
            • Минутку, и как этим можно будет пользоваться?
              И да, variadic templates вроде относительно новая штука?
              (Новая относительно говна мамонта из OP, я имею ввиду.)
              Ответить
              • Да абсолютно так же, как и конструктором из топика.

                Любое количество аргументов с любыми типами, которые можно сконвертить в T.

                Если у тебя сибилдер 6 - там и с++98 то нету...
                Ответить
                • Ну так то да. Но в функцию так разные типы, чтобы они остались разными не передать. Разве что как какой нибудь boost::any или boost::variant. any для printf-подобной функции перебор, но variant учитывая ограниченность возможных типов — вполне.
                  Ответить
                  • Ну так то да. Но в функцию так разные типы, чтобы они остались разными не передать. Разве что как какой нибудь boost::any или boost::variant. any для printf-подобной функции перебор, но variant учитывая ограниченность возможных типов — вполне.
                    Ответить
                • Да абсолютно так же, как и конструктором из топика.

                  Любое количество аргументов с любыми типами, которые можно сконвертить в T.

                  Если у тебя сибилдер 6 - там и с++98 то нету...
                  Ответить
                • Да абсолютно так же, как и конструктором из топика.<br />
                  <br />
                  Любое количество аргументов с любыми типами, которые можно сконвертить в T.<br />
                  <br />
                  Если у тебя сибилдер 6 - там и с++98 то нету...
                  Ответить
                • Да абсолютно так же, как и конструктором из топика.<br />
                  <br />
                  Любое количество аргументов с любыми типами, которые можно сконвертить в T.<br />
                  <br />
                  Если у тебя сибилдер 6 - там и с++98 то нету...
                  Ответить
                • Да абсолютно так же, как и конструктором из топика.<br />
                  <br />
                  Любое количество аргументов с любыми типами, которые можно сконвертить в T.<br />
                  <br />
                  Если у тебя сибилдер 6 - там и с++98 то нету...
                  Ответить
                • Да абсолютно так же, как и конструктором из топика.<br />
                  <br />
                  Любое количество аргументов с любыми типами, которые можно сконвертить в T.<br />
                  <br />
                  Если у тебя сибилдер 6 - там и с++98 то нету...
                  Ответить
                • Да абсолютно так же, как и конструктором из топика.<br />
                  <br />
                  Любое количество аргументов с любыми типами, которые можно сконвертить в T.<br />
                  <br />
                  Если у тебя сибилдер 6 - там и с++98 то нету...
                  Ответить
                • Да абсолютно так же, как и конструктором из топика.<br />
                  <br />
                  Любое количество аргументов с любыми типами, которые можно сконвертить в T.<br />
                  <br />
                  Если у тебя сибилдер 6 - там и с++98 то нету...
                  Ответить
                • Да абсолютно так же, как и конструктором из топика.<br />
                  <br />
                  Любое количество аргументов с любыми типами, которые можно сконвертить в T.<br />
                  <br />
                  Если у тебя сибилдер 6 - там и с++98 то нету...
                  Ответить
                • Да абсолютно так же, как и конструктором из топика.<br />
                  <br />
                  Любое количество аргументов с любыми типами, которые можно сконвертить в T.<br />
                  <br />
                  Если у тебя сибилдер 6 - там и с++98 то нету...
                  Ответить
                • Да абсолютно так же, как и конструктором из топика.<br />
                  <br />
                  Любое количество аргументов с любыми типами, которые можно сконвертить в T.<br />
                  <br />
                  Если у тебя сибилдер 6 - там и с++98 то нету...
                  Ответить
                • Да абсолютно так же, как и конструктором из топика.<br />
                  <br />
                  Любое количество аргументов с любыми типами, которые можно сконвертить в T.<br />
                  <br />
                  Если у тебя сибилдер 6 - там и с++98 то нету...
                  Ответить
                • Да абсолютно так же, как и конструктором из топика.<br />
                  <br />
                  Любое количество аргументов с любыми типами, которые можно сконвертить в T.<br />
                  <br />
                  Если у тебя сибилдер 6 - там и с++98 то нету...
                  Ответить
              • Минутку, и как этим можно будет пользоваться?
                И да, variadic templates вроде относительно новая штука?
                (Новая относительно говна мамонта из OP, я имею ввиду.)
                Ответить
            • В очень грубом приближении (по-хорошему надо аккуратно зафорвардить аргументы):<pre><code class="cpp">template typename... Args
              OpenArray(Args... args) :
              Count(sizeof...(args)),
              Array(new T[sizeof...(args)] {T(args)...})
              {
              }</code></pre>
              Ответить
            • В очень грубом приближении (по-хорошему надо аккуратно зафорвардить аргументы):<pre><code class="cpp">template <typename... Args>
              OpenArray(Args... args) :
              Count(sizeof...(args)),
              Array(new T[sizeof...(args)] {T(args)...})
              {
              }</code></pre>
              Ответить
            • В очень грубом приближении (по-хорошему надо аккуратно зафорвардить аргументы):<pre><code class="cpp">template <typename... Args>
              OpenArray(Args... args) :
              Count(sizeof...(args)),
              Array(new T[sizeof...(args)] {T(args)...})
              {
              }</code></pre>
              Ответить
            • В очень грубом приближении (по-хорошему надо аккуратно зафорвардить аргументы):<pre><code class="cpp">template <typename... Args>
              OpenArray(Args... args) :
              Count(sizeof...(args)),
              Array(new T[sizeof...(args)] {T(args)...})
              {
              }</code></pre>
              Ответить
            • В очень грубом приближении (по-хорошему надо аккуратно зафорвардить аргументы):<pre><code class="cpp">template <typename... Args>
              OpenArray(Args... args) :
              Count(sizeof...(args)),
              Array(new T[sizeof...(args)] {T(args)...})
              {
              }</code></pre>
              Ответить
            • В очень грубом приближении (по-хорошему надо аккуратно зафорвардить аргументы):<pre><code class="cpp">template <typename... Args>
              OpenArray(Args... args) :
              Count(sizeof...(args)),
              Array(new T[sizeof...(args)] {T(args)...})
              {
              }</code></pre>
              Ответить
            • В очень грубом приближении (по-хорошему надо аккуратно зафорвардить аргументы):<pre><code class="cpp">template <typename... Args>
              OpenArray(Args... args) :
              Count(sizeof...(args)),
              Array(new T[sizeof...(args)] {T(args)...})
              {
              }</code></pre>
              Ответить
            • В очень грубом приближении (по-хорошему надо аккуратно зафорвардить аргументы):<pre><code class="cpp">template <typename... Args>
              OpenArray(Args... args) :
              Count(sizeof...(args)),
              Array(new T[sizeof...(args)] {T(args)...})
              {
              }</code></pre>
              Ответить
            • В очень грубом приближении (по-хорошему надо аккуратно зафорвардить аргументы):<pre><code class="cpp">template <typename... Args>
              OpenArray(Args... args) :
              Count(sizeof...(args)),
              Array(new T[sizeof...(args)] {T(args)...})
              {
              }</code></pre>
              Ответить
            • В очень грубом приближении (по-хорошему надо аккуратно зафорвардить аргументы):<pre><code class="cpp">template <typename... Args>
              OpenArray(Args... args) :
              Count(sizeof...(args)),
              Array(new T[sizeof...(args)] {T(args)...})
              {
              }</code></pre>
              Ответить
            • В очень грубом приближении (по-хорошему надо аккуратно зафорвардить аргументы):<pre><code class="cpp">template <typename... Args>
              OpenArray(Args... args) :
              Count(sizeof...(args)),
              Array(new T[sizeof...(args)] {T(args)...})
              {
              }</code></pre>
              Ответить
            • В очень грубом приближении (по-хорошему надо аккуратно зафорвардить аргументы):<pre><code class="cpp">template <typename... Args>
              OpenArray(Args... args) :
              Count(sizeof...(args)),
              Array(new T[sizeof...(args)] {T(args)...})
              {
              }</code></pre>
              Ответить
          • Вообще, это кааааакбы оправданно.
            Этот самый OpenArray чаще всего используется в паре с вариантным типом для аналога sprintf(), так что ему придется принимать параметры разных типов. Таким образом, обычный метод создания variadic functions тут не прокатит...
            Но все равно выглядит как говно.
            Ответить
        • std::initializer_list не получится. Это гомогенная коллекция. Разные типы не пихаются.
          Ответить
          • std::initializer_list не получится. Это гомогенная коллекция. Разные типы не пихаются.
            Ответить
  • а что плохого. это fastcall, всё через резисторы.

    Единственное, можно было бы передать указатели массивом.
    Ответить
    • Минутку, и как этим можно будет пользоваться?<br />
      И да, variadic templates вроде относительно новая штука? <br />
      (Новая относительно говна мамонта из OP, я имею ввиду.)
      Ответить
      • Минутку, и как этим можно будет пользоваться?br /
        И да, variadic templates вроде относительно новая штука? br /
        (Новая относительно говна мамонта из OP, я имею ввиду.)
        Ответить
    • а что плохого. это fastcall, всё через резисторы.

      Единственное, можно было бы передать указатели массивом.
      Ответить
    • а что плохого. это fastcall, всё через резисторы.<br />
      <br />
      Единственное, можно было бы передать указатели массивом.
      Ответить
    • а что плохого. это fastcall, всё через резисторы.<br />
      <br />
      Единственное, можно было бы передать указатели массивом.
      Ответить
    • а что плохого. это fastcall, всё через резисторы.<br />
      <br />
      Единственное, можно было бы передать указатели массивом.
      Ответить
    • а что плохого. это fastcall, всё через резисторы.<br />
      <br />
      Единственное, можно было бы передать указатели массивом.
      Ответить
    • а что плохого. это fastcall, всё через резисторы.<br />
      <br />
      Единственное, можно было бы передать указатели массивом.
      Ответить
    • а что плохого. это fastcall, всё через резисторы.<br />
      <br />
      Единственное, можно было бы передать указатели массивом.
      Ответить
    • а что плохого. это fastcall, всё через резисторы.<br />
      <br />
      Единственное, можно было бы передать указатели массивом.
      Ответить
    • а что плохого. это fastcall, всё через резисторы.<br />
      <br />
      Единственное, можно было бы передать указатели массивом.
      Ответить
    • а что плохого. это fastcall, всё через резисторы.<br />
      <br />
      Единственное, можно было бы передать указатели массивом.
      Ответить
    • а что плохого. это fastcall, всё через резисторы.<br />
      <br />
      Единственное, можно было бы передать указатели массивом.
      Ответить
    • а что плохого. это fastcall, всё через резисторы.<br />
      <br />
      Единственное, можно было бы передать указатели массивом.
      Ответить

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8