函数的__func__C++11本地预定义变量无法在VisualStudio2012Professional(安装了Update1)中使用默认的内置VisualStudio2012(v110)编译器进行编译,或者2012年11月CTP(v120_CTP_Nov2012)编译器。但是,编辑器不会提示__func__下的任何红色波浪下划线。__func__应该给出其包含函数的名称,在本例中为foo,但这既不会编译也不会让编辑器提示:#includeusingnamespacestd;voidfoo(){cout它给出了编译器错误:errorC2065:'__func__':undeclar
问题什么是std::hash的良好特化,用于std::unordered_map或std::unordered_set的第三个模板参数,用于所有成员数据类型都已具有良好特化std::的用户定义类型哈希?对于这个问题,我将“好”定义为易于实现和理解、相当高效且不太可能产生哈希表冲突。良好的定义不包括任何关于安全的陈述。Google的现状目前,有两个StackOverflow问题是Google搜索“stdhashspecialization”的首选。第一个,Howtospecializestd::hash::operator()foruser-definedtypeinunorderedc
我知道将无限数量的字符串散列到32bint中必然会产生冲突,但我希望散列函数能提供一些不错的分布。这两个字符串有相同的哈希值是不是很奇怪?size_thash0=std::hash()("generated_id_0");size_thash1=std::hash()("generated_id_1");//hash0==hash1我知道我可以使用boost::hash或其他人,但我想知道std::hash有什么问题.我用错了吗?我不应该以某种方式“播种”它吗? 最佳答案 您对std::hash的使用没有任何问题.问题是特化std:
我想拥有类型特征,这将帮助我获得类的类型从成员函数指针。我查看了thisanswer并找到了我的目标。看起来像这样:#include//exampleclassstructMyClass{voidfunct(){std::coutstructget_class{};templatestructget_class{usingtype=Class;};templateusingget_class_t=typenameget_class::type;intmain(){get_class_tmyObj;//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--->thi
假设我有一些函数模板f1:templateintf1(inti,intj)noexcept{returni+j+f2(i,j);}有没有办法确定f2(i,j)可以是constexpr.(无论是函数还是仿函数)等等标记f1作为constexpr也是?我正在考虑如何在这里使用SFINAE,但没有找到如何检测constexpr使用typetraits 最佳答案 您可以将f1标记为constexpr。templateconstexprintf1(inti,intj)noexcept{returni+j+f2(i,j);}模板函数f1将是co
我正在尝试构建一个调试日志消息函数,用于记录调用日志消息的文件、行和函数。#defineDEBUG_PANIC(p)CLogging::Debuglogf("Debugmarker(%s)-::%s()infile:%s(%d)",p,__func__,__FILE__,__LINE__);上面的代码适用于一些编译器,但不是全部。我的代码需要与GCC以及MicrosoftVisualStudio交叉兼容。我添加了以下定义以帮助兼容性。#ifndef__FUNCTION_NAME__#ifdefined__func__//Undeclared#define__FUNCTION_NAME_
C++11std::hash类型可以用来散列函数指针吗?有一个hash部分特化定义为templatestructhash;但由于函数指针与C++中的其他指针类型不同(例如,它们不能强制转换为void*),我不确定将它用于以下类型是否安全int(*)()或void(*)(int,int).这是允许的吗?新的ISO规范中是否有任何具体的措辞支持或反驳这一点?谢谢! 最佳答案 很好的问题。我不确定答案,我很乐意听从比我知识更好的人,但我的想法是,即使函数指针与数据指针不同,它们仍然是指针:所以std::hash应该应用部分特化。对于它的值
如果我们在C(C99/C11)和C++中的函数之外使用预定义变量__func__会发生什么?#includeconstchar*str=__func__;intmain(void){printf("%s",str);return0;}gcc4.7.2只给出警告(启用-Wall-W-pedantic)并且什么也不打印。标准没有明确说明:ISO/IEC14882:20118.4.1一般[dcl.fct.def.general]8Thefunction-localpredefinedvariable__func__isdefinedasifadefinitionoftheformstatic
如何让STL实现选择我的自定义类型?在MSVC上,有一个类std::tr1::hash,我可以通过使用来部分专门化它namespacestd{namespacetr1{templatestructhash{...};}}但这是推荐的方式吗?此外,这也适用于GCC的实现吗?对于boost::hash,提供一个免费的函数size_thash_value(constMyType&)就够了,TR1的实现有没有类似的东西? 最佳答案 我试图找出使用无序关联容器执行此操作的确切语法(也使用GCC,正如OP所要求的那样)并提出了这个问题。不幸的是
我正在用NodeJS为我的网站制作一个实时应用程序,允许我的用户使用他们的帐户登录等。但是,我在部分日志记录方面遇到了一些问题。当我在主站点上注册/登录用户时,我使用PHP的hash()函数对他们的密码进行哈希处理,如下所示:$passwordSalt=mcrypt_create_iv(100);$hashed=hash("sha256",$password.$passwordSalt.$serverSalt);它在我的网站上效果很好但是我需要能够在NodeJS中从数据库中获取用户的salt,并能够对用户输入的密码进行哈希处理,将其与数据库的密码进行检查,并确保它们与用户登录匹配。我通