Что такое «Выражение SFINAE»?

Вhttp://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspxКоманда VC ++ официально заявляет, что они еще не реализовали базовую функцию C ++ 11 «Выражение SFINAE». Тем не менее, следующие примеры кода скопированы изhttp://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html принимаются компилятором VC ++.

пример 1:

template <int I> struct A {};

char xxx(int);
char xxx(float);

template <class T> A<sizeof(xxx((T)0))> f(T){}

int main()
{
    f(1);
}

пример 2:

struct X {};
struct Y 
{
    Y(X){}
};

template <class T> auto f(T t1, T t2) -> decltype(t1 + t2); // #1
X f(Y, Y);  // #2

X x1, x2;
X x3 = f(x1, x2);  // deduction fails on #1 (cannot add X+X), calls #2

My question is: What is "Expression SFINAE"?

Ответы на вопрос(1)

Ваш ответ на вопрос