Remove rules against std::function from the programmer's manual

Clarify that llvm::function_ref is like StringRef for callables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@213326 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Reid Kleckner 2014-07-17 22:43:00 +00:00
parent c1ef24ce39
commit 5d83e5bdd5

View File

@ -298,7 +298,9 @@ The ``function_ref``
(`doxygen <http://llvm.org/doxygen/classllvm_1_1function_ref.html>`__) class
template represents a reference to a callable object, templated over the type
of the callable. This is a good choice for passing a callback to a function,
if you don't need to hold onto the callback after the function returns.
if you don't need to hold onto the callback after the function returns. In this
way, ``function_ref`` is to ``std::function`` as ``StringRef`` is to
``std::string``.
``function_ref<Ret(Param1, Param2, ...)>`` can be implicitly constructed from
any callable object that can be called with arguments of type ``Param1``,
@ -323,17 +325,11 @@ can be called using:
return false;
});
Note that a ``function_ref`` object contains pointers to external memory, so
it is not generally safe to store an instance of the class (unless you know
that the external storage will not be freed).
``function_ref`` is small enough that it should always be passed by value.
``std::function``
^^^^^^^^^^^^^^^^^
You cannot use ``std::function`` within LLVM code, because it is not supported
by all our target toolchains.
Note that a ``function_ref`` object contains pointers to external memory, so it
is not generally safe to store an instance of the class (unless you know that
the external storage will not be freed). If you need this ability, consider
using ``std::function``. ``function_ref`` is small enough that it should always
be passed by value.
.. _DEBUG: