草庐IT

限定词

全部标签

c++ - 以编程方式将 LAN 计算机名称解析为完全限定名称?

我正在编写一个C++应用程序,它从外部世界接收LAN计算机名称作为输入(例如\\PCNAME123,我可以通过在Windows运行提示符或IE地址栏中键入来访问它)并且需要获取一些基于该名称的数据,例如通过使用它调用gethostbyname()函数。问题是我需要一个完全限定的名称(例如PCNAME123.domainname.net)我已经对其进行了测试,gethostbyname()可以正常工作,但不能用于“PCNAME123”或“\\PCNAME123”。如何获取该网络计算机的完全限定名称(请注意,它不是针对本地主机,而是针对本地网络上的其他计算机)?

c++ - 尾随返回类型、declval 和引用限定符 : can they work together?

考虑以下示例:#includestructA{voidf(){}};structB{voidf()&{}};structC{voidf()&&{}};templateautof()->decltype(std::declval().f()){}intmain(){f();//f();//(*)f();}当用B调用时(第(*)行),代码不再编译std::declval转换T在特定情况下为右值引用类型。如果我们稍微改变一下,就会遇到相反的问题://...templateautof()->decltype(std::declval().f()){}//...intmain(){f();f()

c++ - 具有范围限定符的模板语法的含义

我最近看到了这个:templatestructST{...};templatestructST{...};我假设第二个模板是第一个模板的特化。但是UV::*的语义是什么??? 最佳答案 这意味着“指向类V成员的指针,其中成员的类型是U”。例如,structX{intx=0;};//...intX::*p=&X::x;//s;//t;// 关于c++-具有范围限定符的模板语法的含义,我们在StackOverflow上找到一个类似的问题: https://stac

c++ - ctor 声明/定义中接受的 const 限定符(llvm 错误?)

我的编译器(实际上是AppleLLVM5.0版(clang-500.2.79)(基于LLVM3.3svn))接受(编译)该代码:classX{private:inti;public:constX(){cout它的工作方式就好像没有const限定符引导ctor定义一样。我尝试了-Wall、-pedantic不同类型的标准激活,总是一样的......所以:我错过了什么吗?我没能发现它在最新标准中的句法是正确的……这是gcc/llvm的错误吗?似乎gcc/llvm默默地忽略了const。这是我错过的功能吗?我的示例无法证明它的用处吗?注意:gcc3.4.3不编译它,gcc4.4.5也不编译。

c++ - 限定标识符 C++ 的重复外部声明

为什么不能在函数内部重新声明限定名称?以下代码无法编译(在MSVC2015和clang中)inti;namespaceN{intj;}voidfoo(){externinti;externinti;externintN::j;externintN::j;}intmain(){return0;}但是,如果我们将两行externintN::j;移动到voidfoo()之前,那么代码可以正常编译。更新值得注意的是重复声明不合格的名称确实有效,::i和::N::j都已经在它们各自的声明中定义了,::N::j对foo不可见语法确实允许externint::N::j并且它不是定义下面的代码也失败了

c++ - 使用 libtooling 获取完全限定的模板模板参数名称

我正在尝试使用libtooling打印CXXRecordDecl具有模板模板参数的模板类的实例化。不幸的是,模板模板参数的字符串表示不完全限定(例如,它缺少namespace)。我正在打印CXXRecordDecl使用此代码:clang::PrintingPolicypolicy=compiler_instance->getLangOpts();std::stringname=decl->getTypeForDecl()->getCanonicalTypeInternal().getAsString(policy);这是一个我希望输出为ns::A的示例,但我得到ns::A:namesp

c++ - 类型的模板特化和 const 限定符

为什么编译器期望模板在(具体)类型上单独特化T和constT?让我举个例子。我有一个由类类型键控的无序映射Keystd::unordered_mapdata;要编译它必须专门化std::hash在类型上Key作为namespacestd{templateclasshash{/*implementation*/};}但是,当我将map类型更改为std::unordered_mapdata;编译器没有使用我的特化,而是选择了通用的std::hash,这只不过是一个编译时断言,直到我专门化std::hash.撇开使用const限定映射键类型的实用程序,为什么不constT折叠到T在寻找这种情

c++ - CUDA:内存限定符的非法组合

我有以下代码:主.cu:#include"class.h"intmain(){}类.h:classClass{__global__voidFunction(){};};当我使用命令nvcc-cmain.cu-omain.o编译此代码时,出现以下错误:class.h(3):warning:inlinequalifierignoredfor"global"functionclass.h(3):error:illegalcombinationofmemoryqualifiers我对这些错误中的每一个都有疑问。为什么它“忽略”函数的__global__限定符,为什么__global__内存限定

c++ - 如何在此指针上应用限制限定符

如何将GCC/Clang的__restrict__限定符应用于类的this指针?这个问题的灵感来自RichardPowell的CppCon2018演讲,“HowtoArgue(ment).”我看到了一个类似的问题“restrictqualifieronmemberfunctions(restrictthispointer).”(所有代码都可以在CompilerExplorer上找到)voidbar();classFoo{public:intthis_example()const{if(value>0){bar();returnvalue;}else{returnvalue;}}priv

c++ - const 限定符在复制初始化变量时有用吗?

我想知道在使用值的拷贝初始化非引用/指针变量时使用可选的const限定符有哪些优点和缺点:例如:voidf(constTv)而不是voidf(Tv)//v不需要改变if(constinterr=f()){/*...*而不是if(interr=f()){/*...*甚至voidf(){constT*constv=p;/*...*而不是voidf(){constT*v=p;/*...*/>这只是风格问题吗?C++11标准在其示例中使用什么?const不能提示编译器将变量存储在一些特殊的只读存储器中(在某些实现中)吗? 最佳答案 在这种情