The BOOST_PP_CHECK_EMPTY variadic macro
+checks to see if its variadic input is empty or not. It expands to 1 if its input
+is empty and expands to 0 if its input is not empty. The macro only exists when
+the compilation is at the C++20 level and the __VA_OPT__ construct is supported.
+When the macro invocation BOOST_PP_VARIADIC_OPT() expands to 1, then this
+macro exists and can be invoked, otherwise this macro does not exist
+and attempting to invoke it will lead to a preprocessor error that the macro
+can not be found. Because of this condition the header file for including
+this macro includes the header file for the BOOST_PP_VARIADIC_OPT macro.
+It is possible to pass data to this macro which expands to nothing, in which
+case this macro will expand to 1 just as if nothing has been passed.
+
+
+
diff --git a/doc/ref/variadic_opt.html b/doc/ref/variadic_opt.html
index d8c425a..7057cbc 100644
--- a/doc/ref/variadic_opt.html
+++ b/doc/ref/variadic_opt.html
@@ -16,6 +16,19 @@ Expands to 1 if the __VA_OPT__ construct is supported, otherwise expands to 0.
None
+
Remarks
+
+ This macro only returns 1 if the compiler is compiling at its own C++20 level and
+ __VA_OPT__ is supported. It is possible for a compiler to support the __VA_OPT__
+ construct when not compiling at its own C++20 level, but this macro will return
+ 0 in that case even if __VA_OPT__ is normally supported for that level. The reason
+ for this is that such a compiler may have a compiler switch, enforcing a strict
+ adherence to a particular C++ standard level, which gives a warning or an error
+ if __VA_OPT__ is specified below the C++20 level, and the preprocessor library
+ wants to avoid that happening. Therefore the macro will only test to see whether
+ or not __VA_OPT__ is supported at the C++20 level, while otherwise always returning
+ 0 for all lesser C++ standard levels.
+