Стандартная грамматика C++03 для перегрузки оператора выглядит следующим образом:
идентификатор-функции-оператора:
оператор оператор
оператор оператор ‹ список-шаблонов-аргументов?>
Первый — это обычный синтаксис перегрузки операторов, который мы обычно используем, например.
Myclass operator + (Myclass s) {...}
Но что означает второй вариант? В частности, в какой ситуации мы используем список-шаблонов-аргументов? После беглого просмотра C++11 я обнаружил, что вторая форма была удалена из стандарта. Каково было первоначальное намерение этого?
РЕДАКТИРОВАТЬ: после тестирования с помощью VC++ 2010 ниже приведен один из способов использования приведенного выше синтаксиса, хотя для меня это не имеет особого смысла:
class K {
public:
int a;
template <int B>
int operator + (int b) {
return a+b+B;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
K k;
k.a=1;
int s;
s=k.operator+<115>(2);
printf("%d\n",s);
return 0;
}
output:118