Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Z tematu "[C++11]Uniwersalny typ dla wyrażeń lambda (?)", nie bardzo rozumiem kodu

Ostatnio zmodyfikowano 2012-01-19 20:09
Autor Wiadomość
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:
C/C++
#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:
C/C++
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).
P-48798
pekfos
» 2012-01-19 19:17:00
jakie tam rzutowanie..
http://en.cppreference.com/w/cpp/utility/functional/function

że Google wcale nie pomaga
to słabo szukasz..

btw: muszę przyznać, tytuł tematu mnie rozbawił ;]
P-48799
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.
P-48801
DejaVu
» 2012-01-19 19:29:42
Tworzysz nową filozofię świata... poczytaj o szablonach :)
P-48802
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].
P-48806
pekfos
» 2012-01-19 19:46:34
specjalizować szablon
Specjalizować, czy konkretyzować? Bo to nie to samo :P Jak już używasz słownictwa, to używaj poprawnego :)
P-48807
akwes
» 2012-01-19 19:54:02
http://pl.wikipedia.org/wiki/Szablon_funkcji#Funkcja_specjalizowana

Chyba można uznać że to specjalizowanie szablonu  :P ?
P-48808
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.
P-48809
« 1 » 2
  Strona 1 z 2 Następna strona