Saran Temat założony przez niniejszego użytkownika  | 
Skrócone wywołanie funkcji » 2017-01-30 18:51:53 Jest może jakaś nowość w c++11 pozwalająca na wywołanie funkcji typu: foo( int, string )( int2, string2 ); zamiast foo( int, string ); foo( int2, string2 ); dzięki czemu zamiast wywoływania dwa razy tej samej funkcji, wywołamy ją dwa razy w jednej linijce?  | 
 | 
jankowalski25  | 
» 2017-01-30 18:58:44 Pokaż kod, który chcesz uprościć. Strzelam: 1. Zwykła pętla for, w której wywołasz funkcję ileśtam razy. 2. Oprócz pętli wskaźnik na funkcję, który będziesz zmieniał i wywoływał różne funkcje z tymi samymi parametrami i wartością zwracaną tego samego typu. 3.  Wyrażenia lambda (C++11) | 
 | 
Monika90  | 
» 2017-01-30 19:19:10 #include <iostream> #include <utility>
  void f( int x, int y, int z ) {     std::cout << x << y << z; }
  template < class Func > struct G {     Func f;          template < class...Args >     G < Func >& operator ()( Args &&...args )     {         f( std::forward < Args >( args )...);         return * this;     } };
  template < class Func > auto make( Func f ) { return G < Func > { f }; }
  int main() {     auto g = make( f );     g( 1, 2, 3 )( 4, 5, 6 )( 7, 8, 9 );      }
  Wstępują tu nazwy takie ja  G oraz  make, ponieważ niełatwo jest wymyślić dobre nazwy dla czegoś takiego... Należy też mieć na uwadze że kolejność wartościowania argumentów jest nieokreślona, więc np.  f(h()); f(h()); niekoniecznie ma taki sam efekt co  g(h())(h()); | 
 | 
Saran Temat założony przez niniejszego użytkownika  | 
» 2017-01-30 19:44:10 No nieźle, dzięki. Zaskoczyłaś mnie. @jankowalski25 Jeśli chodzi o kod: glDeleteShader( vert_shader )( frag_shader );
  :>  | 
 | 
Saran Temat założony przez niniejszego użytkownika  | 
» 2017-01-30 19:54:03 Hmm... tak w sumie, użyć tego nie potrafię.  | 
 | 
Monika90  | 
» 2017-01-30 19:57:33 auto delete_shaders = make( glDeleteShader );
  delete_shaders( vert_shader )( frag_shader );
   | 
 | 
Saran Temat założony przez niniejszego użytkownika  | 
» 2017-01-30 20:08:42 Ah, zmyliły mnie te f'y, dzięki. Kiedy zamieniam wywołanie na  delete_shaders( vert_shader )( frag_shader );  program przestaje działać, czemu tak się dzieje? Z normalnym  glDeleteShader( vert_shader ); ...  działa prawidłowo.  | 
 | 
Monika90  | 
» 2017-01-30 20:27:44 Nie wiem, użyj debugera, pokaż też więcej kodu.  | 
 | 
|  « 1 »  2 |