jsc Temat założony przez niniejszego użytkownika |
Z tematu "[C++11]Uniwersalny typ dla wyrażeń lambda (?)", nie bardzo rozumiem kodu » 2012-01-19 19:15:14 Pekfos w ostatnim poście tematu zamieścił następujący kod: #include <functional> #include <iostream>
template < class T > struct A { T t; std::function < void( T & ) > ff; A( T nt, std::function < void( T & ) > f ) : t( nt ) , ff( f ) { } void exe() { ff( t ); }; void prn() { std::cout << t << std::endl; } };
int main() { int nw = 6; A < int > na( 42, std::function < void( int & ) >([ & ]( int & tr ) { tr = nw; } ) ); na.prn(); na.exe(); na.prn(); }
Intryguje mnie następujący fragment: std::function < void( int & ) >([ & ]( int & tr ) { tr = nw; } )
a szczególne ostry nawias, czy to jest rzutowanie int& na void i w sumie to jest typ zwracany tego wyrażenia lambda. A ogólnie co to jest std::function (przepraszam, ale ta nazwa jest na tyle nieszczęśliwa, że Google wcale nie pomaga). |
|
pekfos |
» 2012-01-19 19:17:00 |
|
jsc Temat założony przez niniejszego użytkownika |
» 2012-01-19 19:28:20 O ile zrozumiałem, std::function to jest rodzaj klasy macierzystej obiektów funkcyjnych (czyli funktorów).
Dalej mam problem z nawiasami ostrymi. |
|
DejaVu |
» 2012-01-19 19:29:42 Tworzysz nową filozofię świata... poczytaj o szablonach :) |
|
jsc Temat założony przez niniejszego użytkownika |
» 2012-01-19 19:41:06 Dobra, ogólnie to się orientuję co to są szablony. Mi się rozbija o konstrukcję typu: < void( T & ) >, chodzi mi o to, że (piszę jak najogólniej) parametrSzablonu1 (parametrSzablonu2) wygląda jak wywołanie funkcji (czytając syntaktycznie), a ile się orientuję specjalizować szablon można tylko przez podanie typu wprost, wartość stałej, nazwy zastępcze dla szablonów klas (pojęcie zaczerpnięte z http://xion.org.pl/files/texts/mgt/html/2_4.html Kurs Xiona, część szablony[/a]. |
|
pekfos |
» 2012-01-19 19:46:34 Specjalizować, czy konkretyzować? Bo to nie to samo :P Jak już używasz słownictwa, to używaj poprawnego :) |
|
akwes |
» 2012-01-19 19:54:02 |
|
DejaVu |
» 2012-01-19 19:56:50 Chciałbym jednak zauważyć, że rozmawiamy o standardzie C++11, a nie o standardzie C++, który obowiązywał jeszcze przed pojawieniem się C++11... myślę, że wszyscy tu zgromadzeni hobbystycznie będą się dokształcali z nowego standardu i możemy tylko liczyć na to, że będą chcieli się dzielić swoją wiedzą w postaci artykułów. |
|
« 1 » 2 |