Lunderberg opened a new pull request, #17246:
URL: https://github.com/apache/tvm/pull/17246

   Prior to this commit, various header files had `using namespace 
tvm::runtime`, which imports all names from `tvm::runtime` into the current 
namespace.
   
   These imports can cause compilation errors depending on the order of 
`#include` statements.  For example, the `#include 
<tvm/relay/attrs/transform.h>` file uses the unqualified name `Bool` to refer 
to `::tvm::Bool`, a subclass of `PrimExpr`.  If a different header file 
specifies `using namespace tvm::runtime` within the `tvm::relay` namespace, 
then the unqualified name `Bool` ambiguously refers to either `::tvm::Bool` or 
`::tvm::runtime::Bool`.
   
   In MSVC, this can cause even further compilation errors.  By default, MSVC 
does not follow the C++ standard for name resolution in templates.  The 
standard requires that any names in a template that do not depend on template 
parameters be resolved when the template is declared.  However, MSVC instead 
resolves these names when the template is instantiated.  As a result, the same 
`using namespace tvm::runtime` may cause a compilation error if it occurs after 
the template's declaration, but before the template's usage.
   
   (TVM provides the `/permissive-` flag to MSVC builds specifically to disable 
MSVC's non-standard name resolution, so this only impacts downstream forks that 
disable this flag.  See https://github.com/apache/tvm/pull/16343 for more 
details.)
   
   This commit removes `using namespace tvm::runtime`, replacing them with 
explicit `using tvm::runtime::SOME_SPECIFIC_SYMBOL` where necessary.  This 
resolves both the include-order dependency for standards-compliant compilers, 
and the compilation errors for MSVC's default build.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to