В следующем коде я предоставил аргументы по умолчанию для оператора оператора массива .
struct st
{
int operator[](int x = 0)
{
// code here
}
};
Но компилятор сгенерировал ошибку:
error: 'int st::operator[](int)' cannot have default arguments
int operator[](int x = 0)
Но, если я предоставляю аргументы по умолчанию для оператора вызов функции.
struct st
{
int operator()(int x = 0)
{
// code here
}
};
Он отлично работает.
Итак, у меня есть вопросы:
- Почему не разрешены аргументы по умолчанию для оператора индекса массива?
- Почему допустимые аргументы по умолчанию для оператора вызова функции?