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.

  1. 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.

时间: 2024-10-05 17:48:33

no matching function transform?的相关文章

C++异常:no matching function for call to "Matrix(Matrix&amp;)"

C++异常:no matching function for call to "Matrix(Matrix&)" 我定义了一个类叫Matrix,其中构造函数explicit Matrix(const Matrix& source); 也写了一个方法: Matrix Matrix::myFun(const Matrix &source){  ...    return *this;} 编译报出上面的异常来,原因是explicit关键字抑制隐式转换,当我返回*thi

[c++]no matching function for call to ‘sort(…)......

[问题] 在做LeetCode的Merge Intervals时用到c++的sort函数,一直出这个错误,甚是郁闷.最后终于找到了问题所在. [代码] #include <iostream> #include <algorithm> #include <vector> using namespace std; struct Interval { int start; int end; Interval() : start(0), end(0) {} Interval(i

error: no matching function for call to &#39;std::exception:exception(const char[16])&#39;

环境:codeblocks 语言:C++ 在执行:throw new exception("queue is empty.");时 遇到问题:error: no matching function for call to 'std::exception:exception(const char[16])' 解决办法:修改为 std::logic_error e("xxx."); throw std::exception(e); error: no matching

no matching function for call to ‘std::basic_string&lt;char&gt;::assign(std::string&amp;, int)

使用string中的assign赋值函数报错,代码为: text0.assign(line,i+1); 其中text0与line都为string类型 最后发现assign函数的原型为 string &assign(const char *s,int n); 将代码改为以下即可 text0.assign(line.c_str(),i+1); 附  assign函数 string &operator=(const string &s);//把字符串s赋给当前字符串 string &am

[转]STL transform算法中使用toupper函数

原文转自 http://blog.csdn.net/justin12zhu/article/details/5649236 今天需要实现一个把小写字母转换为大写字母的函数,由于传入的参数是STL中的string类,所以第一想法就是用transform算法来实现这功能,但是报错了.回家之后写了下面一个测试代码来看看到底错在哪里和怎么解决. #include <iostream> #include <algorithm> #include <cctype> using na

HTML5 transform三维立方体(带旋转效果)

为了更好得掌握transform的精髓,所以决定完成三维立方体的模型,可以实现360无死角的三维旋转效果. 但是旋转时判断每个面的视图顺序比较困难,仍未完美解决,希望有人能解答! 源码直接贡献啦: <style> .cuboid_side_div{ position:absolute; border:1px solid #333; -webkit-transition:ease all 1s; } </style> <script> /** * 本版本存在以下问题: *

通过JS将BSAE64生成图片并下载

HTML:<div style="display:block;margin:0 auto;width:638px;height:795px;"><div id="render" >        CONTENT</div></div> <div id="template" style="margin:10px 0 0 385px;"> <input type=&

Fiddler源代码分享

frmViewer.cs: namespace Fiddler{    using Microsoft.Win32;    using System;    using System.Collections;    using System.Collections.Generic;    using System.Collections.Specialized;    using System.ComponentModel;    using System.Diagnostics;    usi

async源码学习 - 全部源码

因为工作需要,可能我离前端走远了,偏node方向了.所以异步编程的需求很多,于是乎,不得不带着学习async了. 我有个习惯,用别人的东西之前,喜欢稍微搞明白点,so就带着看看其源码. github: https://github.com/caolan/async 文档:http://caolan.github.io/async/ 里面提供的工具方法,控制流程方法还是很多的.所以需要哪些方法,就看相应的源码. 下面是其全部源码. (function (global, factory) { typ