std::min 与std::max 的 Compiler Error C2780

代码

#include<iostream>
#include <algorithm> // std::min
#undef min
int main()
{
float a =15.0f;
float c ;
c=std::min(10,a);
printf("%f",b);
getchar();
}

错误提示

Error 1 error C2780: ‘const _Ty &std::min(const _Ty &,const _Ty &,_Pr)‘ : expects 3 arguments - 2 provided 
Error 2 error C2782: ‘const _Ty &std::min(const _Ty &,const _Ty &)‘ : template parameter ‘_Ty‘ is ambiguous
3 IntelliSense: no instance of overloaded function "std::min" matches the argument list
4 IntelliSense: too few arguments in function call

unction template (C++98)

template <class T> const T& min (const T& a, const T& b) {
  return !(b<a)?a:b;     // or: return !comp(b,a)?a:b; for version (2)
}错误分析 min采用的stl模板,算法的原型中,a,b两个形参应该为相同类型,c=std::min(10,a); 10 与 a 的类型不匹配导致了一下的错误修改方法方法1c=std::min(10.0f,a);
方法2float b=10;
c=std::min(b,a);
方法3c=std::min((float)10.0,a);

 

 
时间: 2024-10-10 16:18:52

std::min 与std::max 的 Compiler Error C2780的相关文章

error LNK2005: “public: class std::vector&lt;class std::vector&lt;class std::vector&lt;float&gt;”

VS2010:error LNK2005: "public: class std::vector<class std::vector<class std::vector<class std::vector<float,class std::allocator<float> >,class std::allocator<class std::vector<float,class std::allocator<float> 如: Re

std::min和自定义宏冲突解决办法

#include<algorithm> #include<iostream> #define min(a,b)!(b<a)?a:b int main(){ int a=1,b=2; std::cout<<(std::min)(a,b); return 0; } 加入一个括号,std::min就不会被宏替代了. std::min和自定义宏冲突解决办法

error LNK2019: 无法解析的外部符号 &quot;class std::vector&lt;class std::basic_string&lt;char,struct std::char_traits&lt;cha

error LNK2019: 无法解析的外部符号 "class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class

fatal error C1189: #error: &quot;Oops: min() and/or max() are defined as preprocessor macros. Define NOMINMAX macro before including any system headers!&quot;

1.问题描述 vs2015 使用pg数据库的C++库文件4.0.1版本libpqxx.dll,包含头文件#include "pqxx\pqxx" 出现这个错误: fatal error C1189: #error:  "Oops: min() and/or max() are defined as preprocessor macros.  Define NOMINMAX macro before including any system headers!" 2.原

对std::string和std::wstring区别的解释,807个赞同,有例子

807down vote string? wstring? std::string is a basic_string templated on a char, and std::wstring on a wchar_t. char vs. wchar_t char is supposed to hold a character, usually a 1-byte character. wchar_t is supposed to hold a wide character, and then,

iOS出现 Undefined symbols for architecture armv7 std::basic_string&lt;char, std::char_traits&lt;char&gt;

Undefined symbols for architecture i386: “_OBJC_CLASS_$_XXX”, referenced from: objc-class-ref in XXX ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation) 如果真机调试就是 undefined symb

测试std::sort 和std::qsort 的性能, 修改编译器栈大小

根据effective STL中Item 46 提到, C程序员很难接受C++的STL中std::sort(定义于头文件<algorithm>)竟然比C语言的std::qsort(定义与头文件<cstdlib>中)快了670%. 最后Scot Meyer建议我们我们要使用C++的std::sort函数. 我们知道qsort 实现的排序算法是快排, 但是std::sort 实现的排序算法并不知道, 有人说这得看是哪一个STL版本了. std::sort的大部分实现的是quick so

c++11特性与cocos2d-x 3.0之std::bind与std::function

昨天同事让帮忙写一小功能,才发现cocos2d-x 3.0 和 cocos2d-x 3.0rc0 差别还是相当大的. 发现Label这一个控件,3.0就比rc0版本多了一个创建函数,更为关键的是3.0内的Label锚点是在ccp(0.5,0.5),而一直3.0rc0是ccp(0,0). 累觉不爱.尽管cocos2d-x改变太快,兼容性一次次的暴露出不足,但是,总归是向好的方向进行.于是下载了3.0来玩玩~ cocos new 出新的项目之后,仔细阅读代码,才发现了一句3.0区别于2.0的代码:

C++ std::unordered_map使用std::string和char *作key对比

最近在给自己的服务器框架加上统计信息,其中一项就是统计创建的对象数,以及当前还存在的对象数,那么自然以对象名字作key.但写着写着,忽然纠结是用std::string还是const char *作key,哪个效率高些.由于这服务器框架业务逻辑全在lua脚本,在C++需要统计的对象没几个,其实用哪个没多大区别.我纠结的是,很久之前就知道这两者效率区别不大,但直到现在我都还没搞清楚为啥,于是写些代码来测试. V1版本的代码如下: #ifndef __MAP_H__ #define __MAP_H__