VS c++ error C2589:“(“:“::“ 右边的非法标记错误处理

在使用windows VS2019 使用tensorrt部署yolov5时,

size.Width = std::max(size.Width, elementSize.Width);

提示了

error C2589:“(”:“::” 右边的非法标记错误处理

错误;
找到这个问的原因是:模板是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现真正的代码可用性。模板可以分为两类,一个是函数模板,一个是类模板。
函数模板和全局宏冲突。
解决办法
方法一、设置项目属性,在预定义处理器中添加NOMINMAX来禁止使用Visual C++的min/max宏定义

项目属性 》c/c++》预处理器====》预处理器定义(此处添加预定义编译开关NOMINMAX)

但是visual C++中定义能自动匹配double和int,如果进行了上述设置,代码中手动将int型的数据乘以1.0来达到double的目的。
方法二、加上括号,与Vsual C++ 的min/max宏定义区分开

size.Width = std::max(size.Width, elementSize.Width);

修改为:

size.Width = (std::max)(size.Width, elementSize.Width);

你可能感兴趣的:(c++,error,c++,visual,studio,开发语言)