Да, вы можете использовать __LINE__
. Также __FILE__
.
См. Раздел Ключевые слова
Как отмечают в комментариях BCS и Джонатан М. Дэвис, для __LINE__
и его друзей существует особый случай: при использовании в качестве значения по умолчанию шаблона или аргумента функции они разрешаются в местоположение вызывающая сторона , а не подпись шаблона или функции. Это отлично подходит для того, чтобы избавить абонентов от необходимости предоставлять эту информацию.
void myAssert(T)(lazy T expression, string file = __FILE__, int line = __LINE__)
{
if (!expression)
{
// Write the caller location
writefln("Assert failure at %s:%s", file, line);
}
}