草庐IT

上下行

全部标签

c++ - 如果用作模板参数的类型在需要完整类型的上下文中内部使用,则何时必须完整?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Incompleteclassusageintemplate我有一个问题困扰了我几个小时。最初我认为该类型在实例化点必须是完整的,但我尝试过的所有编译器都接受该类型在该点仍然是不完整的,只要它被定义翻译单元中的任何位置。为了说明这一点,问题是关于这个简单程序的正确性:templateintsize(){returnsizeof(T);//Tisrequiredtobecompleteinthisexpression}classtest;//testisdeclared,butincompleteintmain

c++ - 使用 msvc 时,有没有办法获得有关错误上下文的更好信息? (例如 : C2248)

我想知道是否有办法获得有关msvc(2005)中错误位置的更好信息?例如,在我的类中从boost::noncopyable继承时,我得到一个C2248错误,内容如下:errorC2248:'boost::noncopyable_::noncopyable::noncopyable':cannotaccessprivatememberdeclaredinclass'boost::noncopyable_::noncopyable'.Thisdiagnosticoccurredinthecompilergeneratedfunction'MyClass::MyClass(constMyCl

c++ - 有没有一种方法可以将别名模板推导为模板模板参数,同时仍保留其被推导上下文的属性

一段时间后,我再次发现了模板模板参数的强大功能。参见例如以下片段:templateclassTT,classT>voidfoo(TT){}templateusingtyper=T;intmain(){foo(int{});}别名模板作为模板模板参数传递给模板,并进一步用于检测模板的其他参数,因为它是推断的上下文。美丽!然而,当需要推导别名模板本身时,编译器看起来就像疯了一样:templateclass>structtag{};templateclassTT,classT>voidfoo(tag,TT){}templateusingtyper=T;intmain(){foo(tag{},

实体框架上下文自动创建新实体

我有一个EF代码第一个数据库,在数据库中创建实体之前,我正在检查相关实体是否首先存在,将其关联,然后创建实体。例如,假设我有一个具有相关用户实体的订单实体。如果订单实体想存储在数据库中,则首先检查用户是否已经存在。如果确实如此,我想更改订单,以便其用户属性等于现有用户实体,而不是创建新记录。//checkforanexistinguserandassociatetheminsteadofcreatinganewonevarexistingUser=await_userRepository.GetAsync(u=>u.Username==order.User.Username);if(exist

c++ - constexpr 上下文中的 std::optional 赋值运算符

我在std::optional上摸不着头脑,根据thedocs,不应有constexpr赋值运算符。但是,当我在gcc-8.1中尝试这个片段时,它编译并工作得很好:constexprstd::optionalfoo(){std::optionalbar=3;bar=1337;returnbar;}constexprautoz=foo();有什么我想念的吗? 最佳答案 这似乎是gcc中的一个错误。我刚刚在clang-6.0中尝试过,编译失败并出现预期错误。此外,该标准没有提及赋值运算符的任何constexpr重载,因此我会将此错误报告

c++ - 在多线程上下文中正确处理 GetLastError(和其他)

假设GetLastError(和变体)是每线程还是每进程是否正确?如果它是每个进程的问题在多线程应用程序中有些明显,因为无法保证在失败的调用和GetLastError之间没有进行其他Win32调用。有时GetLastError的值很重要。例如,如果您正在使用IO完成端口,AcceptEx将返回FALSE(失败)。WSAGetLastError(类似于GetLastError)将返回ERROR_IO_PENDING以通知您它已挂起并且失败不是由于其他原因。问题是许多其他调用可能正在运行并覆盖此值。这些调用是线程特定的还是进程特定的?如果特定于流程,那么您如何正确处理?

c++ - 在用 C\C++ 编写的代码上下文中的乱序执行与有序执行

谁能给我解释一下(用简单的英语)乱序执行与有序执行?我正在阅读一些关于它的理论文本,但我觉得我不能完全理解它。C\C++上下文中的一个小示例可能会有所帮助。多核处理器和多线程的特殊性是什么? 最佳答案 乱序执行是制造微处理器的工程师使用的一种技术。结果会影响微处理器执行机器指令的方式,我们通常使用“汇编语言”编写这些指令。重要的是要认识到乱序执行不是程序员实现的东西——它是微处理器上的一种机制。程序员可能会编写巧妙利用特定实现的汇编代码,但在后来的微处理器上编写的相同代码可能不会从这种聪明中受益,因为处理器关于乱序执行的设计可能不同

AWS Java SDK上下文类找不到

我正在尝试使用AWSJavaSDK开发Lambda功能,并遇到了一个绊脚石。示例参考com.amazonaws.services.lambda.runtime.Context课堂,但我无法在JavaSDK中的任何地方找到它。我什至下载了整个AWSJavaSDK源代码并运行$find.-name'Context.java'而且它没有结果。...这类班级是否已弃用,文档未更新?我完全缺少什么吗?我正在使用Maven来构建该项目,这是我的POM:4.0.0awstestAWSLambdaTest1.0-SNAPSHOTjarUTF-81.81.8com.amazonawsaws-java-sdk1.

c++ - 模板化上下文中的显式析构函数

我想在模板上下文中显式销毁一个vector。以下适用于我(GNUC++4.3、4.4和Clang++1.1):templatevoiddestroy_vector_owner(VectorOwner*obj){obj->v.~vector();//furthercleanupbyPythonAPIfunctionsomitted}虽然它在MacOSXv10.5的g++(i686-apple-darwin10-gcc-4.2.1)上失败了expectedclass-namebefore‘(’token如果我把它改成obj->v.~vector();代码无法用G++编译,但Clang仍然可

c++ - 如何在 native 事件中创建 OpenGL ES 2 上下文?

就我而言,我找不到任何适用于OpenGLES2的纯AndroidNDK示例。包含的native-activity示例项目构建了ES1上下文。是否有任何示例程序演示如何在纯C++中创建ES2上下文? 最佳答案 创建OpenGLES2上下文应该与创建OpenGLES1大致相同。基于NDK中的“native-activity”示例,您只需将其添加到传递给eglChooseConfig的属性列表中:constEGLintattribs[]={EGL_RENDERABLE_TYPE,EGL_OPENGL_ES2_BIT,...EGL_NONE