2009-08-10 17 views
22

Słyszałem wszystkie te nowe (na /.) O C++ 0x nie mając już pojęcia, ale nie mam pojęcia, co to jest? Czy ktoś może mi wytłumaczyć?Co to są pojęcia?

Odpowiedz

25

koncepcje ogólna funkcja programowania, które pozwalają ktoś pisania kodu szablonie określić wymagania, które parametry typu muszą spełniać.

Na przykład niektóre typy kolekcji wymagają parametru typu dla kolekcji, aby zdefiniować operatora <. Programista może więc zdefiniować koncepcję o nazwie LessThanComparable, która mówi kompilatorowi, że parametr typu do klasy szablonowej musi mieć zdefiniowany operator <. Jeśli użytkownik szablonu spróbuje utworzyć instancję szablonu za pomocą typu, który nie ma koncepcji LessThanComparable (tj. Nie ma funkcji operatora <), kompilator może emitować prosty komunikat o błędzie, a nie torrent komunikatów o błędach związanych z szablonowym kodem. Kompilator może również skorzystać z dodatkowych informacji dostarczanych przez koncepcje w celu wygenerowania bardziej wydajnego kodu.

To jest trochę przesadzone, ale myślę, że daje ogólne pojęcie za koncepcjami.

Jeśli chcesz wypróbować niektóre z możliwości koncepcji, przejrzyj bibliotekę sprawdzania Boost.Concept. Nie sądzę, żeby zapewniał pełen zakres możliwości, które miały być w standardzie, ale jest to dobre miejsce na start.

Możesz również spojrzeć na ConceptC++, tam jest dobra definicja pojęć.

+0

Huh, to prawie dokładnie to, co powiedział link EBGreen! Dziwny zbieg okoliczności, co? – jkeys

+2

Niezupełnie. Przeczytałem ten artykuł, kiedy został opublikowany po raz pierwszy prawie rok temu. Mam możliwość zachowania informacji :-) – Ferruccio

+0

świetna odpowiedź. to było jedno z pytań o C++, którego bałem się zapytać – chester89