Я читал о стандарте С++ 11, но не могу понять, насколько важно следующее. Пример очень важен.
Для определения частичного упорядочения используются два набора типов. Для каждого используемых шаблонов есть оригинальный тип функции и преобразованный тип функции. [Примечание: создание преобразованного типа описывается в 14.5.6.2. - конец примечания] Процесс вычета использует преобразованный тип в качестве шаблона аргумента и оригинальный тип другой шаблон в качестве шаблона параметра. Этот процесс выполняется дважды для каждого типа, участвующего в сравнении частичного заказа: один раз используя преобразованный шаблон-1 в качестве шаблона аргумента и шаблона-2 как шаблон шаблона и снова с использованием преобразованного шаблона-2 как шаблон аргумента и шаблон-1 в качестве шаблона параметра
- N3242 14.8.2.4.2