草庐IT

prototype-scoped

全部标签

c++ - -> 在函数原型(prototype)之后是什么意思?

这段代码发生了什么?太困惑了。#includestructcheck{templateautofoo()->decltype(std::declval().value,void()){static_assert(T{}.value==10,"Incorrectvalue");}}var;intmain(){structapple{intvalue{10};};var.foo();}特别是它具有->的部分以及之后的所有内容。 最佳答案 让我们一点一点来。autofoo()->decltype(std::declval().value,

C++ 标准 : do namespace-scoped constexpr variables have internal linkage?

假设我们有一个标题foo.h包含以下内容:#ifndefFOO_H_#defineFOO_H_namespacefoo{constexprstd::string_viewkSomeString="blah";}#endif//FOO_H_foo::kSomeString是否保证在包含foo.h的任何翻译单元中具有内部链接?这在C++11和C++17之间是否有所不同?在标准草案中[basic.link]/3说Anamehavingnamespacescopehasinternallinkageifitisthenameof[...]anon-inlinevariableofnon-vol

c++ - 带有 Cygwin 1.7 的 GoogleTest 1.6 编译错误 : 'fileno' was not declared in this scope

带有Cygwin1.7的GoogleTest1.6:“fileno”未在此范围内声明在EclipseCDT中对Factorial()函数进行简单测试时出现错误消息:Invoking:CygwinC++Compilerg++-std=c++0x-DGTEST_OS_CYGWIN=1-I"E:\source\gtest-1.6.0\include"-O0-g3-Wall-c-fmessage-length=0-MMD-MP-MF"src/challenge.d"-MT"src/challenge.d"-o"src/challenge.o""../src/challenge.cpp"Infi

c++ - 为什么 boost 没有 make_scoped()?

Boost的make_shared()函数promise在尝试创建shared_ptr时是异常安全的.为什么没有make_scoped()相等的?是否有通用的最佳做法?这是来自boost::scoped_ptrdocumentation的代码示例这对我来说似乎不安全:boost::scoped_ptrx(newShoe);这行代码会依次完成这三件事:为Shoe分配堆内存调用Shoe的构造函数调用boost::scoped_ptr的构造函数如果Shoe的构造函数抛出异常,内存将被泄露。(参见R.MartinhoFernandes的回答)scoped_ptr不会处理释放,因为它还没有被构造

C++ 错误 : Sleep was not declared in this scope

我在Ubuntu中使用带有codeBlocks的C++,在GCC4.7中boost1.46[yield_k.hpp]我得到这个编译时错误:error:Sleepwasnotdeclaredinthisscope代码:#includeusingnamespacestd;intmain(){cout如何解决此错误?我希望程序挂起1秒。 最佳答案 Sleep是一个Windows函数。对于Unix,请考虑使用nanosleep(POSIX)或usleep(BSD;已弃用)。一个nanosleep示例:voidmy_sleep(unsigne

c++ - 为什么 Alexandrescu 不能使用 std::uncaught_exception() 在 ScopeGuard11 中实现 SCOPE_FAIL?

这个问题在这里已经有了答案:Scope(failure)inC++11?(2个回答)关闭9年前。毫无疑问,很多人都熟悉Alexandrescus先生的ScopeGuard模板(现在是Loki的一部分)和这里介绍的新版本ScopeGuard11:http://channel9.msdn.com/Shows/Going+Deep/C-and-Beyond-2012-Andrei-Alexandrescu-Systematic-Error-Handling-in-C这里有来源:https://gist.github.com/KindDragon/4650442在2012年及以后的c++演讲中

c++ - 我在哪里可以为我的 C++ 项目找到一个好的 Scope Guard 实现?

我最近刚刚了解了ScopeGuardC++习语。不幸的是,我找不到任何好的实现。谁能给我指点C++中一些好的和可用的ScopeGuard实现?谢谢,博达·赛多。 最佳答案 原始的ScopeGuard类包含在thisDr.Dobb'sarticle中AndreiAlexandrescu和PetruMarginean。一个稍微改进的版本,与JoshuaLehrer的一些更改可用here.(Lehrer的版本是我在项目中使用的版本。)它也包含在Loki中。图书馆。Boost现在有一个ScopeExit比ScopeGuard更强大的库(因为

c++ - C/C++ 编译器如何在头文件中找到原型(prototype)的定义?

当我在头文件中声明一个函数,并将该函数的定义放在其他文件中时,编译器/链接器如何找到定义?它会系统地搜索其路径中的每个文件,还是有更优雅的解决方案?这几天一直困扰着我,一直找不到解释。 最佳答案 编译器不会这样做,链接器会这样做。当编译器一次处理一个源文件时,当调用链接器时,它会传递编译器生成的所有目标文件的名称,以及用户希望链接的任何库的名称。因此,链接器完全了解可能包含该定义的文件集,并且只需要查看这些目标文件的符号表。除此之外,它不需要进行任何搜索。例如,假设您有foo.h和foo.c定义和实现函数foo(),而bar.h和b

c++ - protected 成员是派生类中的 "not declared in this scope"

这个问题在这里已经有了答案:accessingprotectedmembersofsuperclassinC++withtemplates[duplicate](2个回答)关闭8年前。#include#includetemplateclassBase{protected:std::vectordata_;};templateclassDerived:publicBase{public:voidclear(){data_.clear();}};intmain(intargc,char*argv[]){Derivedderived;derived.clear();return0;}我无法编

c++ - 编写一个函数的原型(prototype),该函数需要一个正好是 16 个整数的数组

其中一个面试问题要求我“编写一个C函数的原型(prototype),该函数需要一个恰好包含16个整数的数组”,我想知道它可能是什么?也许是这样的函数声明:voidfoo(inta[],intlen);还是别的什么?如果语言是C++呢? 最佳答案 在C中,这需要一个指向16个整数数组的指针:voidspecial_case(int(*array)[16]);它会被调用:intarray[16];special_case(&array);在C++中,您也可以使用对数组的引用,如Nawaz所示。的回答。(题主问的是C,原来标签里只提到了C