From: Nick Lewycky Date: Tue, 28 Jan 2014 07:03:46 +0000 (+0000) Subject: Clarify. Thanks to Sean Silva and Warren Hunt for help wordsmithing! X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e568c2d0397362cc37cc5fd5b878a06ed327e4ef;p=clang Clarify. Thanks to Sean Silva and Warren Hunt for help wordsmithing! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@200292 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/docs/LanguageExtensions.rst b/docs/LanguageExtensions.rst index 0a90bb7e7e..48bb6e8cc9 100644 --- a/docs/LanguageExtensions.rst +++ b/docs/LanguageExtensions.rst @@ -1448,12 +1448,12 @@ whether it is a redeclaration (following the rules used when determining whether a C++ template specialization is ODR-equivalent), but is not part of the type. -An enable_if expression will be evaluated by substituting the values of the -parameters from the call site into the arguments in the expression and -determining whether the result is true. If the result is false or could not be -determined through constant expression evaluation, then this overload will not -be chosen and the reason supplied in the string will be given to the user if -their code does not compile as a result. +The enable_if expression is evaluated as if it were the body of a +bool-returning constexpr function declared with the arguments of the function +it is being applied to, then called with the parameters at the callsite. If the +result is false or could not be determined through constant expression +evaluation, then this overload will not be chosen and the provided string may +be used in a diagnostic if the compile fails as a result. Because the enable_if expression is an unevaluated context, there are no global state changes, nor the ability to pass information from the enable_if