////
Copyright 2002, 2017 Peter Dimov

Distributed under the Boost Software License, Version 1.0.

See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt
////

[#current_function_macro]
# Current Function Macro, <boost/current_function.hpp>
:toc:
:toc-title:
:idprefix:

## BOOST_CURRENT_FUNCTION

The header `<boost/current_function.hpp>` defines a single macro, `BOOST_CURRENT_FUNCTION`,
similar to the C99 predefined identifier `\\__func__`.

`BOOST_CURRENT_FUNCTION` expands to either a string literal, or the name of a
character array local to the current function, containing the (fully qualified,
if possible) name of the enclosing function. If there is no enclosing function,
the behavior varies by compiler, but is usually a compile error.

Some compilers do not provide a way to obtain the name of the current enclosing
function. On such compilers, or when the macro `BOOST_DISABLE_CURRENT_FUNCTION`
is defined, `BOOST_CURRENT_FUNCTION` expands to `"(unknown)"`.

`BOOST_DISABLE_CURRENT_FUNCTION` addresses a use case in which the programmer
wishes to eliminate the string literals produced by `BOOST_CURRENT_FUNCTION` from
the final executable for security reasons.
