dbo:abstract
|
- Substitution failure is not an error (SFINAE) ist eine Programmiertechnik in der Programmiersprache C++. Dabei wird die Tatsache ausgenutzt, dass eine fehlgeschlagene Substitution von Template-Argumenten keinen Kompilierfehler erzeugt. Ist beispielsweise eine Funktion mehrfach überladen und sind gewisse Kandidaten das Ergebnis der Instanziierung eines Funktionstemplates mit möglicherweise deduzierten Template-Argumenten, so wird – sofern die Substitution der Template-Argumente fehlgeschlagen ist – die Überladung aus der Menge der Kandidaten entfernt, ohne dass der Kompiliervorgang mit einem Kompilierfehler abgebrochen wird. Sind die schließlich verbliebenen Kandidaten mehrdeutig, beispielsweise weil sie dieselbe Signatur haben und sich nur durch den Rückgabewert unterscheiden, oder sind keine Kandidaten für den Funktionsaufruf mehr vorhanden, so wird dennoch wie üblich ein Kompilierfehler erzeugt. (de)
- Substitution failure is not an error (SFINAE) refers to a situation in C++ where an invalid substitution of template parameters is not in itself an error. David Vandevoorde first introduced the acronym SFINAE to describe related programming techniques. Specifically, when creating a candidate set for overload resolution, some (or all) candidates of that set may be the result of instantiated templates with (potentially deduced) template arguments substituted for the corresponding template parameters. If an error occurs during the substitution of a set of arguments for any given template, the compiler removes the potential overload from the candidate set instead of stopping with a compilation error, provided the substitution error is one the C++ standard grants such treatment. If one or more candidates remain and overload resolution succeeds, the invocation is well-formed. (en)
- SFINAE(대체 실패는 오류가 아님, Substitution failure is not an error)는 C++에서 템플릿 매개변수에 자료형이나 값을 넣을 수 없어도 오류가 발생하지 않는 상황을 말한다. 이를 이용한 프로그래밍 테크닉을 설명하기 위해 SFINAE라는 줄임말을 최초로 사용한 사람은 David Vandevoorde이다. 더 자세히 설명하자면, 함수 오버로드 후보 집합을 만들 때 그 중에는 템플릿 매개 변수에 자료형이나 값이 대입된 경우가 있을 수 있다. 이 대체 과정에서 발생한 오류가 C++ 표준이 허용하는 것이라면, 컴파일러는 컴파일 오류를 보고하지 않고, 후보 집합에서 그 후보를 제외한다. 만약 하나 이상의 후보가 남고 오버로드 결정(Overload Resolution)에 성공한다면, 호출이 정상적으로 이루어진다. (ko)
- SFINAE(Substitution failure is not an errorの略、スフィネェ)とは、C++において、テンプレート引数の展開に不正があったとしても、それはエラーにはならないという状況のことである。 このような状態は、テンプレートメタプログラミングなどの際に、テンプレートの実体化の時にそのテンプレート引数が必要な特性を持っていることを検知する目的に応用される。 (ja)
- SFINAE (англ. substitution failure is not an error, «неудавшаяся подстановка — не ошибка») — правило языка C++, связанное с шаблонами и перегрузкой функций. Широко применяется «не по назначению» — для рефлексии при компиляции: в зависимости от свойств типа компиляция идёт по тому или другому пути. Правило SFINAE гласит: Если не получается рассчитать окончательные типы/значения шаблонных параметров функции, компилятор не выбрасывает ошибку, а ищет другую подходящую перегрузку. Ошибка будет в трёх случаях:
* Не нашлось ни одной подходящей перегрузки.
* Нашлось несколько таких перегрузок, и компилятор не может решить, какую взять.
* Перегрузка нашлась, она оказалась шаблонной, и при инстанцировании шаблона случилась ошибка. (ru)
- 替换失败并非错误 (Substitution failure is not an error, SFINAE)是指C++语言在模板参数匹配失败时不认为这是一个编译错误。最先引入SFINAE缩写描述相关编程技术。 具体说,当创建一个重载函数的候选集时,某些(或全部)候选函数是用模板实参替换(可能的推导)模板形参的模板实例化结果。如果某个模板的实参替换时失败,编译器将在候选集中删除该模板,而不是当作一个编译错误从而中断编译过程,这需要C++语言标准授予如此处理的许可。 如果一个或多个候选保留下来,那么函数重载的解析就是成功的,函数调用也是良好的。 (zh)
|
dbo:wikiPageExternalLink
| |
dbo:wikiPageID
| |
dbo:wikiPageLength
|
- 5615 (xsd:nonNegativeInteger)
|
dbo:wikiPageRevisionID
| |
dbo:wikiPageWikiLink
| |
dbp:wikiPageUsesTemplate
| |
dcterms:subject
| |
rdfs:comment
|
- SFINAE(대체 실패는 오류가 아님, Substitution failure is not an error)는 C++에서 템플릿 매개변수에 자료형이나 값을 넣을 수 없어도 오류가 발생하지 않는 상황을 말한다. 이를 이용한 프로그래밍 테크닉을 설명하기 위해 SFINAE라는 줄임말을 최초로 사용한 사람은 David Vandevoorde이다. 더 자세히 설명하자면, 함수 오버로드 후보 집합을 만들 때 그 중에는 템플릿 매개 변수에 자료형이나 값이 대입된 경우가 있을 수 있다. 이 대체 과정에서 발생한 오류가 C++ 표준이 허용하는 것이라면, 컴파일러는 컴파일 오류를 보고하지 않고, 후보 집합에서 그 후보를 제외한다. 만약 하나 이상의 후보가 남고 오버로드 결정(Overload Resolution)에 성공한다면, 호출이 정상적으로 이루어진다. (ko)
- SFINAE(Substitution failure is not an errorの略、スフィネェ)とは、C++において、テンプレート引数の展開に不正があったとしても、それはエラーにはならないという状況のことである。 このような状態は、テンプレートメタプログラミングなどの際に、テンプレートの実体化の時にそのテンプレート引数が必要な特性を持っていることを検知する目的に応用される。 (ja)
- 替换失败并非错误 (Substitution failure is not an error, SFINAE)是指C++语言在模板参数匹配失败时不认为这是一个编译错误。最先引入SFINAE缩写描述相关编程技术。 具体说,当创建一个重载函数的候选集时,某些(或全部)候选函数是用模板实参替换(可能的推导)模板形参的模板实例化结果。如果某个模板的实参替换时失败,编译器将在候选集中删除该模板,而不是当作一个编译错误从而中断编译过程,这需要C++语言标准授予如此处理的许可。 如果一个或多个候选保留下来,那么函数重载的解析就是成功的,函数调用也是良好的。 (zh)
- Substitution failure is not an error (SFINAE) ist eine Programmiertechnik in der Programmiersprache C++. Dabei wird die Tatsache ausgenutzt, dass eine fehlgeschlagene Substitution von Template-Argumenten keinen Kompilierfehler erzeugt. (de)
- Substitution failure is not an error (SFINAE) refers to a situation in C++ where an invalid substitution of template parameters is not in itself an error. David Vandevoorde first introduced the acronym SFINAE to describe related programming techniques. (en)
- SFINAE (англ. substitution failure is not an error, «неудавшаяся подстановка — не ошибка») — правило языка C++, связанное с шаблонами и перегрузкой функций. Широко применяется «не по назначению» — для рефлексии при компиляции: в зависимости от свойств типа компиляция идёт по тому или другому пути. Правило SFINAE гласит: Если не получается рассчитать окончательные типы/значения шаблонных параметров функции, компилятор не выбрасывает ошибку, а ищет другую подходящую перегрузку. Ошибка будет в трёх случаях: (ru)
|
rdfs:label
|
- Substitution failure is not an error (de)
- SFINAE (fr)
- SFINAE (ko)
- SFINAE (ja)
- Substitution failure is not an error (en)
- SFINAE (ru)
- 替换失败并非错误 (zh)
|
owl:sameAs
| |
prov:wasDerivedFrom
| |
foaf:isPrimaryTopicOf
| |
is dbo:wikiPageRedirects
of | |
is dbo:wikiPageWikiLink
of | |
is foaf:primaryTopic
of | |