Concepts (C++) (original) (raw)
Los conceptos permiten al desarrollador expresar las restricciones de tipos de un componente plantillado, de modo que el compilador puede comprender la intención del desarrollador y de ese modo señalar el error de manera clara en el punto donde se comete. De este modo los conceptos se convierten en una manera de especificar más clara y puntillosamente, tanto para el programador como para el compilador, qué tipos se pueden usar con un componente plantillado.
Property | Value |
---|---|
dbo:abstract | Concepts are an extension to the templates feature provided by the C++ programming language. Concepts are named Boolean predicates on template parameters, evaluated at compile time. A concept may be associated with a template (class template, function template, member function of a class template, variable template, or alias template), in which case it serves as a constraint: it limits the set of arguments that are accepted as template parameters. Originally dating back to suggestions for C++11, the original concepts specification has been revised multiple times before formally being a required part of C++20. (en) Los conceptos permiten al desarrollador expresar las restricciones de tipos de un componente plantillado, de modo que el compilador puede comprender la intención del desarrollador y de ese modo señalar el error de manera clara en el punto donde se comete. De este modo los conceptos se convierten en una manera de especificar más clara y puntillosamente, tanto para el programador como para el compilador, qué tipos se pueden usar con un componente plantillado. (es) 콘셉트(concept)는 ISO Technical Specification ISO/IEC TS 19217:2015으로 제출된 C++ 템플릿의 확장 기능이다. 콘셉트는 이름이 붙은 불린 술어이며, 컴파일 시간에 평가된다. 콘셉트는 템플릿(클래스 템플릿, 함수 템플릿, 클래스의 멤버 함수 템플릿)과 함께 사용되어 사용자에게 제한을 거는데, 템플릿 파라미터로 받을 수 있는 인수에 조건을 건다. 다음 코드는 콘셉트를 사용 가능한 C++ 표준 라이브러리(또 다른 C++ ISO 기술 명세서이다. ISO/IEC DTS 21425)를 이용해 "EqualityComparable"라는 이름의 콘셉트를 정의한다. a==b와 a!=b가 컴파일이 되고, "Boolean" 콘셉트를 만족하는 타입의 리턴값을 내놓는다면 모든 타입 T는 이 콘셉트를 만족시킨다. template concept bool EqualityComparable { return requires(T a, T b) { {a == b} -> Boolean; // Boolean은 불린 컨텍스트에서 사용될 수 있는 타입을 정의하는 콘셉트임 {a != b} -> Boolean; };} 이 콘셉트로 인해 제약이 걸린 함수 템플릿을 다음과 같이 선언될 수 있다. void f(const EqualityComparable&); // 제약이 걸린 함수 템플릿 선언 그리고 평범하게 호출할 수 있다. f(42); // 가능. int는 EqualityComparable을 만족함 콘셉트의 주요 용도는 다음과 같다. * 템플릿 프로그래밍에 타입 검사를 적용 * 템플릿 인스턴스 생성 실패를 컴파일러가 단순하게 진단 * 타입 프로퍼티에 따라 함수 템플릿 오버로드 혹은 클래스 템플릿 특수화를 선택 * 자동 타입 추론에 제한을 걺 (ko) コンセプト(英: concept)は、プログラミング言語の機能。かつてC++への採用が検討されていたが、見送られた。ISO/IEC JTC1/SC22/WG21 C++ 標準化委員会によるC++0xの策定において2009年前半まで検討され、規格書のドラフトにも盛り込まれていたが、2009年7月13日の投票で削除されることが決まった。 (ja) Концепция — интерфейсное расширение шаблонов языка C++, опубликованное в технической спецификации ИСО/МЭК ISO TS 19217:2015. По своей сути концепция является набором логических предикатов, размещённых за списком параметров шаблона, которые оцениваются во время компиляции исходного кода с целью установления ограничений на свойства аргументов, которые принимаются в качестве параметров шаблона. Введение концепций связывают с дальнейшим развитием в языке C++ инструментария, основанного на парадигме обобщённого программирования. Концепция может быть объявлена с шаблоном любого вида (класс-шаблон, шаблон-функция, или функция-член класса-шаблона), eё назначением является выявление логических несоответствий между свойствами типов данных, которые используются внутри тела шаблона и свойствами типов данных, которые поступают в шаблон в качестве входных параметров. До введения в стандарт языка понятие концепции было реализовано в библиотеке общего назначения Boost в виде библиотечных классов проверки концепций BCCL (англ. Boost Concept Checking Library). (ru) 在針對 C++ 進行修訂的 C++0x 中,概念 (concept) 和與其相關的一組公設 (axiom) 被提出作為 C++ 模板系統的擴充。它們被設計用來增進編譯器發現問題代碼所產生的錯誤訊息,並讓程序員能在他們所編寫的樣板中定義樣板參數所具備的屬性。這些屬性讓代碼能指引編譯器做某些優化(除了增進可讀性之外),同時也可能透過形式验证工具來檢驗實作與規格是否相符以增進可靠性。 2009年7月,因為概念被認為還未準備好進入 C++0x,C++0x 委員會決定從標準草案中將其移除。目前有些非正式的計劃以某種形式將概念再次納入標準,但仍未有正式的決定。一個針對概念的初步實作是。 (zh) Концепція (англ. concept) — це доповнення до шаблонів наявних у мові програмування C++. Концепції це іменовані логічні предикати на параметри шаблонів обчислювані під час компіляції. Концепцію можна прив'язати до шаблона (шаблона класу, шаблона функції або функції члена шаблона класу), у такому випадку вона слугує обмеженням: яке встановлює множину агрументів прийнятних як параметри шаблона. Перед тим як увійти до C++20 пропоновану ще для C++11 початкову специфікацію концепцій було переглянуто багато разів. (uk) |
dbo:wikiPageExternalLink | http://accu.org/index.php/journals/2157%7Cdate=October http://accu.org/index.php/journals/2198%7Cdate=February http://www.stroustrup.com/sle2011-concepts.pdf%7Cyear=2011%7Cconference=International http://en.cppreference.com/w/cpp/language/constraints https://isocpp.org/blog/2016/02/a-bit-of-background-for-concepts-and-cpp17-bjarne-stroustrup%7Ctitle=a |
dbo:wikiPageID | 23708477 (xsd:integer) |
dbo:wikiPageLength | 11438 (xsd:nonNegativeInteger) |
dbo:wikiPageRevisionID | 1111153691 (xsd:integer) |
dbo:wikiPageWikiLink | dbr:Typename dbr:Clang dbr:Class_(C++) dbr:Function_(computer_programming) dbr:GNU_Compiler_Collection dbr:Concept_(generic_programming) dbr:Compile_time dbr:Overload_(magazine) dbr:C++ dbr:C++11 dbr:C++20 dbr:Type_class dbr:Template_(C++) dbr:ACCU_(organisation) dbc:C++ dbc:Articles_with_example_C++_code dbr:C++17 dbr:Microsoft_Visual_C++ dbr:Value_(computer_science) dbr:Type_inference dbr:SFINAE dbr:TypeParameter dbr:Boolean_value dbr:Random-access_iterator dbr:Member_function dbr:Tag_dispatching |
dbp:wikiPageUsesTemplate | dbt:Cite_conference dbt:Cite_journal dbt:Cite_web dbt:More_citations_needed dbt:Multiple_issues dbt:Primary_sources dbt:Use_dmy_dates dbt:Cpp |
dcterms:subject | dbc:C++ dbc:Articles_with_example_C++_code |
gold:hypernym | dbr:Extension |
rdf:type | dbo:Software |
rdfs:comment | Los conceptos permiten al desarrollador expresar las restricciones de tipos de un componente plantillado, de modo que el compilador puede comprender la intención del desarrollador y de ese modo señalar el error de manera clara en el punto donde se comete. De este modo los conceptos se convierten en una manera de especificar más clara y puntillosamente, tanto para el programador como para el compilador, qué tipos se pueden usar con un componente plantillado. (es) コンセプト(英: concept)は、プログラミング言語の機能。かつてC++への採用が検討されていたが、見送られた。ISO/IEC JTC1/SC22/WG21 C++ 標準化委員会によるC++0xの策定において2009年前半まで検討され、規格書のドラフトにも盛り込まれていたが、2009年7月13日の投票で削除されることが決まった。 (ja) 在針對 C++ 進行修訂的 C++0x 中,概念 (concept) 和與其相關的一組公設 (axiom) 被提出作為 C++ 模板系統的擴充。它們被設計用來增進編譯器發現問題代碼所產生的錯誤訊息,並讓程序員能在他們所編寫的樣板中定義樣板參數所具備的屬性。這些屬性讓代碼能指引編譯器做某些優化(除了增進可讀性之外),同時也可能透過形式验证工具來檢驗實作與規格是否相符以增進可靠性。 2009年7月,因為概念被認為還未準備好進入 C++0x,C++0x 委員會決定從標準草案中將其移除。目前有些非正式的計劃以某種形式將概念再次納入標準,但仍未有正式的決定。一個針對概念的初步實作是。 (zh) Концепція (англ. concept) — це доповнення до шаблонів наявних у мові програмування C++. Концепції це іменовані логічні предикати на параметри шаблонів обчислювані під час компіляції. Концепцію можна прив'язати до шаблона (шаблона класу, шаблона функції або функції члена шаблона класу), у такому випадку вона слугує обмеженням: яке встановлює множину агрументів прийнятних як параметри шаблона. Перед тим як увійти до C++20 пропоновану ще для C++11 початкову специфікацію концепцій було переглянуто багато разів. (uk) Concepts are an extension to the templates feature provided by the C++ programming language. Concepts are named Boolean predicates on template parameters, evaluated at compile time. A concept may be associated with a template (class template, function template, member function of a class template, variable template, or alias template), in which case it serves as a constraint: it limits the set of arguments that are accepted as template parameters. (en) 콘셉트(concept)는 ISO Technical Specification ISO/IEC TS 19217:2015으로 제출된 C++ 템플릿의 확장 기능이다. 콘셉트는 이름이 붙은 불린 술어이며, 컴파일 시간에 평가된다. 콘셉트는 템플릿(클래스 템플릿, 함수 템플릿, 클래스의 멤버 함수 템플릿)과 함께 사용되어 사용자에게 제한을 거는데, 템플릿 파라미터로 받을 수 있는 인수에 조건을 건다. 다음 코드는 콘셉트를 사용 가능한 C++ 표준 라이브러리(또 다른 C++ ISO 기술 명세서이다. ISO/IEC DTS 21425)를 이용해 "EqualityComparable"라는 이름의 콘셉트를 정의한다. a==b와 a!=b가 컴파일이 되고, "Boolean" 콘셉트를 만족하는 타입의 리턴값을 내놓는다면 모든 타입 T는 이 콘셉트를 만족시킨다. 이 콘셉트로 인해 제약이 걸린 함수 템플릿을 다음과 같이 선언될 수 있다. void f(const EqualityComparable&); // 제약이 걸린 함수 템플릿 선언 그리고 평범하게 호출할 수 있다. f(42); // 가능. int는 EqualityComparable을 만족함 콘셉트의 주요 용도는 다음과 같다. (ko) Концепция — интерфейсное расширение шаблонов языка C++, опубликованное в технической спецификации ИСО/МЭК ISO TS 19217:2015. По своей сути концепция является набором логических предикатов, размещённых за списком параметров шаблона, которые оцениваются во время компиляции исходного кода с целью установления ограничений на свойства аргументов, которые принимаются в качестве параметров шаблона. До введения в стандарт языка понятие концепции было реализовано в библиотеке общего назначения Boost в виде библиотечных классов проверки концепций BCCL (англ. Boost Concept Checking Library). (ru) |
rdfs:label | Concepts (C++) (en) Conceptos (C++) (es) 콘셉트 (C++) (ko) コンセプト (C++) (ja) Концепция (C++) (ru) Концепція (C++) (uk) 概念 (C++) (zh) |
owl:sameAs | dbpedia-ja:Concepts (C++) freebase:Concepts (C++) wikidata:Concepts (C++) dbpedia-es:Concepts (C++) dbpedia-ko:Concepts (C++) dbpedia-ru:Concepts (C++) dbpedia-uk:Concepts (C++) dbpedia-zh:Concepts (C++) https://global.dbpedia.org/id/4hvUi |
prov:wasDerivedFrom | wikipedia-en:Concepts_(C++)?oldid=1111153691&ns=0 |
foaf:isPrimaryTopicOf | wikipedia-en:Concepts_(C++) |
is dbo:influenced of | dbr:Haskell |
is dbo:wikiPageDisambiguates of | dbr:Concept_(disambiguation) |
is dbo:wikiPageRedirects of | dbr:C++_concepts dbr:Concepts_(C++0x) |
is dbo:wikiPageWikiLink of | dbr:C++_concepts dbr:C++_Standard_Library dbr:Comparison_of_Java_and_C++ dbr:Generic_programming dbr:Concept_(generic_programming) dbr:Callable_object dbr:C++ dbr:C++11 dbr:C++20 dbr:Type_class dbr:Haskell dbr:Template_metaprogramming dbr:Modern_C++_Design dbr:Concept_(disambiguation) dbr:Concepts_(C++0x) |
is foaf:primaryTopic of | wikipedia-en:Concepts_(C++) |