diff --git a/doc/ref/add.html b/doc/ref/add.html
index a6681d2..569f07e 100644
--- a/doc/ref/add.html
+++ b/doc/ref/add.html
@@ -34,7 +34,7 @@
It is more efficient, however, to use BOOST_PP_ADD_D in such a situation.
- This macro is the most efficient when x is less than or equal to y.
+ This macro is the most efficient when x is greater than or equal to y.
However, the efficiency gain is not worth actually comparing the two arguments prior to invocation.
In other words, x should be the addend that is most likely to be the largest of the two operands.
diff --git a/doc/ref/add_d.html b/doc/ref/add_d.html
index e4ead2c..26c46a0 100644
--- a/doc/ref/add_d.html
+++ b/doc/ref/add_d.html
@@ -34,7 +34,7 @@
If the sum of x and y is greater than BOOST_PP_LIMIT_MAG, the result is saturated to BOOST_PP_LIMIT_MAG.
- This macro is the most efficient when x is less than or equal to y.
+ This macro is the most efficient when x is greater than or equal to y.
However, the efficiency gain is not worth actually comparing the two arguments prior to invocation.
In other words, x should be the addend that is most likely to be the largest of the two operands.
diff --git a/doc/ref/mul.html b/doc/ref/mul.html
index 2c2ce1a..174d88b 100644
--- a/doc/ref/mul.html
+++ b/doc/ref/mul.html
@@ -34,7 +34,7 @@
It is more efficient, however, to use BOOST_PP_MUL_D in such a situation.
- This macro is the most efficient when x is less than or equal to y.
+ This macro is the most efficient when x is greater than or equal to y.
However, the efficiency gain is not worth actually comparing the two arguments prior to invocation.
In other words, x should be the value that is most likely to be the largest of the two operands.
diff --git a/doc/ref/mul_d.html b/doc/ref/mul_d.html
index 1881912..599fb85 100644
--- a/doc/ref/mul_d.html
+++ b/doc/ref/mul_d.html
@@ -34,7 +34,7 @@
If the product of x and y is greater than BOOST_PP_LIMIT_MAG, the result is saturated to BOOST_PP_LIMIT_MAG.
- This macro is the most efficient when x is less than or equal to y.
+ This macro is the most efficient when x is greater than or equal to y.
However, the efficiency gain is not worth actually comparing the two arguments prior to invocation.
In other words, x should be the value that is most likely to be the largest of the two operands.
diff --git a/doc/ref/while_d_macros.html b/doc/ref/while_d_macros.html
index 7d8a945..6f4d23a 100644
--- a/doc/ref/while_d_macros.html
+++ b/doc/ref/while_d_macros.html
@@ -29,10 +29,12 @@
comparison
control
diff --git a/include/boost/preprocessor/config/config.hpp b/include/boost/preprocessor/config/config.hpp
index 0134d88..fa5ca5b 100644
--- a/include/boost/preprocessor/config/config.hpp
+++ b/include/boost/preprocessor/config/config.hpp
@@ -32,7 +32,7 @@
# elif defined(__MWERKS__) && __MWERKS__ >= 0x3200
# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT())
# elif defined(__EDG__) || defined(__EDG_VERSION__)
-# if defined(_MSC_VER) && __EDG_VERSION__ >= 308
+# if defined(_MSC_VER) && (defined(__INTELLISENSE__) || __EDG_VERSION__ >= 308)
# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_MSVC())
# else
# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_EDG() | BOOST_PP_CONFIG_STRICT())
@@ -75,7 +75,7 @@
# if defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || defined __SUNPRO_CC || defined __HP_aCC && !defined __EDG__ || defined __MRC__ || defined __SC__ || defined __IBMCPP__ || defined __PGI
# define BOOST_PP_VARIADICS 0
# /* VC++ (C/C++) */
-# elif defined _MSC_VER && _MSC_VER >= 1400 && !defined __EDG__ && !defined __clang__
+# elif defined _MSC_VER && _MSC_VER >= 1400 && (!defined __EDG__ || defined(__INTELLISENSE__)) && !defined __clang__
# define BOOST_PP_VARIADICS 1
# define BOOST_PP_VARIADICS_MSVC 1
# /* Wave (C/C++), GCC (C++) */
@@ -90,7 +90,7 @@
# elif !BOOST_PP_VARIADICS + 1 < 2
# undef BOOST_PP_VARIADICS
# define BOOST_PP_VARIADICS 1
-# if defined _MSC_VER && _MSC_VER >= 1400 && !(defined __EDG__ || defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __clang__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || defined __SUNPRO_CC || defined __HP_aCC || defined __MRC__ || defined __SC__ || defined __IBMCPP__ || defined __PGI)
+# if defined _MSC_VER && _MSC_VER >= 1400 && (defined(__INTELLISENSE__) || !(defined __EDG__ || defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __clang__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || defined __SUNPRO_CC || defined __HP_aCC || defined __MRC__ || defined __SC__ || defined __IBMCPP__ || defined __PGI))
# define BOOST_PP_VARIADICS_MSVC 1
# endif
# else