Concept (generic programming)

In generic programming, a concept is a description of supported operations on a type, including syntax and semantics. In this way, concepts are related to abstract types but concepts do not require a subtype relationship.

Language use

The term was in use as early as 1998 for STL,[1] as this was one of the first libraries that extensively used templates. The term concept (and its popularization) is credited to Alexander Stepanov,[2][3] the primary designer of the STL.

In the C++ 1998 standard, the Concept term was introduced to name just a simple description of the requirements for particular type, usually being a template parameter. It was not encoded in the language explicitly – the concept was expressed only by what operations are attempted on objects of that type and what is expected to work (that is, to compile correctly). There was a proposal to add concepts as an explicit language feature in C++11, though it was rejected as "not ready". C++20 eventually accepted the refined design of concept.

As generics in Java and C# have some similarities to C++'s templates, the role of concepts there is played by interfaces. However, there is one important difference between concepts and interfaces: when a template parameter is required to implement a particular interface, the matching type can only be a class that implements (explicitly) that interface. Concepts bring more flexibility because they can be satisfied in two ways:

  • explicitly defined as satisfied by using a concept map (defined separately to the type itself, unlike interfaces)
  • implicitly defined for "auto concepts", which can be used also for built in types and other types that were not predestined for this use

But the C# language has several constructs where the used type does not need to explicitly implement a defined interface, it is only required to match the respective pattern (however, these patterns are not called concepts). E.g. the foreach iteration statement allows the iterated object to be of any type, as long as it implements an appropriate GetEnumerator method.[4] (Compare with the using statement which requires the resource to implement the System.IDisposable interface.[5])

The Nim programming language implements concepts as a series of arbitrary compile-time boolean predicates.[6]

Another language implementing something very similar to concepts is Haskell, where the feature is called type classes.


Examples

Total ordering

The total ordering concept describes the semantics of the < operator. A type is totally ordered when < is a binary predicate and satisfies the following properties:[7][8]

  • anti-reflexive: !(a < a) for any value a.
  • transitive: If a < b and b < c then a < c.
  • anti-symmetric: If a < b then !(b < a).
  • total: If a != b then a < b or b < a.

Many algorithms rely on these properties to function properly. For example the min function can be safely defined on totally ordered types:

#include <concepts>
template <typename T>
    requires std::totally_ordered<T>
T min(T a, T b) {
    // < is defined.
    if (b < a) {
       return b;
    } else {
       // !(b < a) implies a == b or a < b
       return a;
    }
}

Iterator

If a type I satisfies the Trivial Iterator concept in C++, and i is of type I, the following are valid expressions with corresponding semantics:[9]

  • I i default construction.
  • *i must be convertible to some type T.
  • i->m is valid if (*i).m is.

See also

References

  1. ^ Austern, M.H. Generic programming and the STL: using and extending the C++ Standard Template Library. 1998. pp 17–18
  2. ^ a bit of background for concepts and C++17—Bjarne Stroustrup, by Bjarne Stroustrup | Feb 26, 2016
  3. ^ Alex Stepanov, by Bjarne Stroustrup | Jan 21, 2016
  4. ^ C# 6.0 draft specification, The foreach statement
  5. ^ C# 6.0 draft specification, The using statement
  6. ^ "Nim Experimental Features". nim-lang.org. Retrieved 2023-06-19.
  7. ^ Stepanov, Alexander (2009). Elements of Programming. Addison-Wesley Professional. p. 49. ISBN 9780321635372.
  8. ^ Total Orderings - Efficient Programming with Components
  9. ^ Trivial Iterator

Read other articles:

Menara miring Niles Menara Miring Niles, Illinois diselesaikan pembangunannya pada tahun 1934 oleh seorang industriawan bernama Robert Ilg sebagai bagian dari taman hiburan untuk para karyawan Ilg Hot Air Electric Ventilating Company of Chicago, IL. Menara ini terletak di 6300 W. Touhy Avenue dan menurut ukurannya separuh dari menara yang asli di Pisa, Italia. Niles merupakan kota kembar Pisa. Beberapa orang mengira bahwa alasan untuk membangun menara ini ialah untuk mengenang ulang tahun ke-...

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (أغسطس 2022) لين بيري (ممثلة) (بالإنجليزية: Lynne Perrie)‏  معلومات شخصية الميلاد 7 أبريل 1931  روثرهام  [لغات أخرى]‏  الوفاة 24 مارس 2006 (74 سنة) [1]  روثرهام  [

Lightnin' Студійний альбомВиконавець Лайтнін ГопкінсДата випуску 1961Записаний 9 листопада 1960Жанр блюзТривалість 40 хв 34 сСтудія звукозапису Van Gelder Studio, Інглвуд-Кліффс, Нью-ДжерсіЛейбл Bluesville (BVLP 1019)Професійні огляди • AllMusic посил. • The Penguin Guide to Blues Recordings Хронологія Лайтніна Гопкі

خلاصة الفانيليا المستخلص[1] (بالإنجليزية: Extract)، هي مادة مصنوعة عن طريق استخراج جزء من مواد الخام، غالبًا باستخدام مذيب مثل الإيثانول أو الماء، وكذلك عن طريق المواد النباتية بطرق فيزيائية أو كيميائية. يمكن بيع المستخلصات على شكل صبغات أو في شكل مسحوق. يتم تسويق المبادئ ال

اضغط هنا للاطلاع على كيفية قراءة التصنيف الهضمونية العقديةPeptostreptococcus الهضمونية العقدية تنمو في سلاسل. المرتبة التصنيفية جنس  التصنيف العلمي المملكة: بكتيريا الشعبة: متينات الجدار الطائفة: مطثية الرتبة: كلوستريدياليس الفصيلة: مطثاوية الجنس: الهضمونية العقديةPeptostreptococcus �...

يفتقر محتوى هذه المقالة إلى الاستشهاد بمصادر. فضلاً، ساهم في تطوير هذه المقالة من خلال إضافة مصادر موثوق بها. أي معلومات غير موثقة يمكن التشكيك بها وإزالتها. (يناير 2022) خدمات سلطة النتر (السحب). السلكية في مجال النفط والغاز، مصطلح يشير عادة إلى تكنولوجيا الكابلات المستخدمة م...

MTA区域公共汽车运营MTA Regional Bus Operations概要所有者纽约大都会运输署(MTA)地区纽约都会区服務區域纽约市交通類型巴士(包括慢线巴士线路、大站快车线路、快线巴士线路、BRT)线路 共322条: 234条慢线巴士线路 71条快线巴士线路 17条特选巴士服务(英语:Select Bus Service)线路 日客流量502万(2016年)首席执行官安迪•拜福德(英语:Andy Byford)總部美国纽约州纽约市曼�...

2010 single by TankSex MusicSingle by Tankfrom the album Now or Never ReleasedJune 29, 2010Length3:43LabelAtlanticSongwriter(s) Durrell Tank Babbs Jerry Texx Franklin Harvey Mason, Jr. Robert Newt Kristina Stephens J. Valentine Producer(s) Song Dynasty Harvey Mason, Jr. Tank singles chronology Please Don't Go (2007) Sex Music (2010) Emergency (2010) Sex Music is a song by American singer Tank. It was written by Tank along with Robert Newt, Jerry Texx Franklin, Harvey Mason, Jr., Kristina Step...

MarcianiseKomuneComune di MarcianiseLokasi Marcianise di Provinsi CasertaNegara ItaliaWilayah CampaniaProvinsiCaserta (CE)Luas[1] • Total30,21 km2 (11,66 sq mi)Ketinggian[2]33 m (108 ft)Populasi (2016)[3] • Total40.297 • Kepadatan1,300/km2 (3,500/sq mi)Zona waktuUTC+1 (CET) • Musim panas (DST)UTC+2 (CEST)Kode pos81025Kode area telepon0823Situs webhttp://www.comune.marcianise.ce.it M...

Performing arts venue in New Territories, Hong KongKwai Tsing Theatre葵青劇院Overview of the theatre and forecourtKwai Tsing TheatreLocation within Hong KongGeneral informationStatusCompletedTypePerforming arts venueAddressNo. 12 Hing Ning RoadKwai Chung, New Territories Hong KongOpened18 November 1999; 24 years ago (1999-11-18)CostHK$468 millionDesign and constructionArchitect(s)Architectural Services DepartmentStructural engineerOve Arup & PartnersQuantity surveyor...

Defunct American digital media company For the cinema chain, see Regal Cinemas. For the former record label, see United Artists Records. For its joint venture successor, see United Artists Releasing. United Artists CorporationTrade nameUnited Artists Digital Studios (2018–2019)TypeLabelIndustryFilmTelevisionFoundedFebruary 5, 1919; 104 years ago (1919-02-05) in Hollywood, Los Angeles, California, United StatesFoundersMary PickfordCharlie ChaplinDouglas FairbanksD. W. Griff...

British television series Soapstar SuperstarGenreTalent showPresented byBen Shephard (2006)Fern Britton (2006)Zoe Ball (2007)JudgesBilly SammethChris CoweyCilla Black (2006)Martine McCutcheon (2007)Michael Ball (2007)David Gest (2007)Country of originUnited KingdomOriginal languageEnglishNo. of series2No. of episodes18ProductionProduction locationGranada StudiosRunning time60 to 90 minutesProduction companyGranadaOriginal releaseNetworkITVRelease6 January 2006 (2006-01-06) –13 Jan...

Моонзундська операція (1944) Прибалтійська операція Хід Моонзундської операції. 1944Хід Моонзундської операції. 1944 Координати: 58°30′ пн. ш. 23°00′ сх. д. / 58.500° пн. ш. 23.000° сх. д. / 58.500; 23.000 Дата: 27 вересня — 24 листопада 1944 Місце: Моонзундський ар�...

Group of dialects of Slovak Eastern Slovakvýchodoslovenské nárečia, východniarčinaNative toSlovakiaRegionSpiš, Šariš, Zemplín and AbovLanguage familyIndo-European Balto-SlavicSlavicWest SlavicCzech-SlovakSlovakEastern SlovakLanguage codesISO 639-3–Linguist Listslk-eslGlottologNoneEastern Slovak is classified as Vulnerable by the UNESCO Atlas of the World's Languages in Danger Eastern Slovak dialects (Slovak: východoslovenské nárečia, východniarčina) are dialects of the ...

Former sector of British Rail Not to be confused with Rail freight transport or Freight train (disambiguation). This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Railfreight – news · newspapers · books · scholar · JSTOR (October 2008) (Learn how and when to remove this template message) Railfreight58001 at Don...

This article does not cite any sources. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Khaleeji Commercial Bank – news · newspapers · books · scholar · JSTOR (December 2009) (Learn how and when to remove this template message) Khaleeji Commercial Bank B.S.C. البنك الخليجي التجاريIndustryFinanceFounded2004; 19 years ago (2004)He...

واد لحمر بني مخلد تقسيم إداري البلد المغرب  الجهة فاس مكناس الإقليم تازة الدائرة تاهلة الجماعة القروية زراردة المشيخة آيت مخلد السكان التعداد السكاني 688 نسمة (إحصاء 2004)   • عدد الأسر 115 معلومات أخرى التوقيت ت ع م±00:00 (توقيت قياسي)[1]،  وت ع م+01:00 (توقيت صيفي)[1] ...

British architect Dome Cinema, Worthing, 2008 Theophilus Arthur Allen, FRIBA (1846–1929)[1] was a British architect, probably best known for the Grade II* listed Dome Cinema, Worthing. From 1880 to 1884, he was in partnership with John Mackland.[1] Notable buildings Dome Cinema, Worthing (1911), Grade II* listed Oak Hall, Haslemere (1911), Grade II listed in 2010[2] Kenwood, St. George's Hill (1913) References ^ a b Antonia Brodie; British Architectural Library; Roya...

Hindu god of victory and war Muruga redirects here. For the 2007 film, see Muruga (film). Murugan redirects here. For the people with the name, see Murugan (surname). For given names see Karthikeyan, Karthik, Kartik or, see Karthika (disambiguation). KartikeyaGod of Victory and WarCommander of the Devas[1]Large statue of Murugan in Batu Caves templeOther namesMurugan, Subrahmanya, Kumara, Skanda, Saravana, Arumugan, Devasenapati, Shanmukha, Kathirvelan, Guha, Swaminatha, Velayuda, Vē...

16th-century English soldier For other people with the same name, see John Norris (disambiguation). This article includes a list of general references, but it lacks sufficient corresponding inline citations. Please help to improve this article by introducing more precise citations. (June 2010) (Learn how and when to remove this template message) Sir John Norreys. Oil on panel by an unknown author of the English school (1600 – 1629). Sir John Norris, or Norreys (ca. 1547 – 3 September 1597...