Google
 
   
Login
Username:

Password:


Lost Password?

Register now!
Search
Main Menu
top books
Polls
What do you think about php-deluxe.net?
Excellent!
Cool
Hmm..not bad
What the hell is this?
encyclopedia
recommendation
compare webbrowser
Freenet DSL
Who's Online
5 user(s) are online (3 user(s) are browsing encyclopedia)

Members: 0
Guests: 5

more...
browser tip
recommendation!
Sponsored
partner
Germany Next Topmodel
germanys next topmodel germanys next topmodel

Substitution Failure Is Not An Error

Substitution Failure Is Not An Error (often referred to by the acronym SFINAE) is a compilation principle in object oriented programming, applied to C plus plus template (programming) in particular.

In attempting to use function template argument deduction to select among a number of candidate function templates, a C++ compiler may attempt an instantiation that fails on one or more of them.

For example, consider the following C++ program:

template void f( T ); template void f( T * ); // f( 1024 ); // instantiates first f

Even though substitution of the integer for T * in the second f function template would have been incorrect, the attempted substitution does not give rise to an error provided that a correct substitution is found. In this case, the first f is instantiated, and there is no error. Thus, we have the substitution failure is not an error concept, dubbed SFINAE by Vandevoorde and Josuttis.1 SFINAE is an important property in that, without it, it would be difficult to overload function templates; the combination of argument deduction and overloading would render many uses of a set of overloaded function templates illegal. But SFINAE is also valuable as a metaprogramming technique.