Могу ли я иметь в C ++ аргумент по умолчанию для функции, которая по умолчанию равна __PRETTY_FUNCTION___, ___FILE___ и ___LINE__, как определено в точке вызывающего абонента, а не в той точке, где значения по умолчанию предоставляются в заголовочном файлебез использования макросов?
__PRETTY_FUNCTION___
___FILE___
___LINE__
Вы не можете, но вы можете добиться этого поведения с помощью дополнительного макроса. Например:
#DEFINE THROW(e) throwException(e, __FILE__, __LINE__);
На примечании стороны, __PRETTY_FUNCTION__ не является стандартным.
__PRETTY_FUNCTION__
Нет. Макросы раскрываются в строке источника, где они встречаются.
Возможно, вы можете ... но определенно не с тем ограничением, которое вы упомянули (без макросов).