Почему существующие аргументы функции не могут использоваться для оценки других аргументов по умолчанию?

Я писал функцию foo () , которая принимает 2 const char * s в качестве аргументов, pBegin и pEnd . foo () передается строка с завершающим нулем. По умолчанию pEnd указывает на \ 0 (последний символ) строки.

void foo (const char *pBegin,
          const char *pEnd = strchr(pBegin, 0))  // <--- Error
{
  ...
}

Однако я получаю сообщение об ошибке в строке выше:

error: local variable ‘pBegin’ may not appear in this context

Почему компилятор не разрешает такую ​​операцию? В чем потенциальная проблема?

6
задан iammilind 5 February 2012 в 03:44
поделиться