no matching function transform?
Posted 合唱团abc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了no matching function transform?相关的知识,希望对你有一定的参考价值。
http://stackoverflow.com/questions/19876746/stdtolower-and-visual-studio-2013
http://forums.codeguru.com/showthread.php?489969-no-matching-function-transform
std::tolower
is overloaded in C++, it‘s declared in <cctype>
as
int tolower(int);
and also in <locale>
as
template<CharT> CharT tolower(CharT, const locale&);
so when you say "std::tolower
" you get an ambiguous(模糊不清的) reference to an overloaded function.
- Why
::tolower
version is working?
When you include <cctype>
the one-argument overload is declared in namespace std
and mightalso be declared in the global namespace, depending on the compiler. If you include <ctype.h>
then it‘s guaranteed to be included in the global namespace, and ::tolower
will work (although note Dietmar‘s points about when it‘s not safe). The two-argument overload from <locale>
is never declared in the global namespace, so ::tolower
never refers to the two-argument overload.
2. Why
std::tolower
is not working in std::transform?
See above, it‘s an overloaded name.
以上是关于no matching function transform?的主要内容,如果未能解决你的问题,请参考以下文章
QT编程错误解决 error: no matching function for call to
C++ string.replace 生成“No matching function for call”错误
为啥我得到 [Error] no matching function for call to 'car::car()'
error: no matching function for call to 'std::exception:exception(const char[16])'
错误记录Visual Studio 中编译 NDK 报错 ( no matching function for call to ‘cacheflush‘ cacheflush(); )
Qt error ------ no matching function for call to QObject::connect(QSpinBox*&, <unresolved ove