草庐IT

base_func

全部标签

c++ - 为什么 decltype(declval<T>().func()) 在 decltype(&T::func) 不工作的地方工作?

我试图检测成员函数baz()的存在在模板参数中:templatestructImplementsBaz:publicstd::false_type{};templatestructImplementsBaz:publicstd::true_type{};但它总是产生错误:structFoo{};structBar{voidbaz(){}};std::cout::value::value使用declval不过,调用该方法确实有效:templatestructImplementsBaz().baz())>:publicstd::true_type{};当然,现在这个只能检测一个baz具有0

c++ - Noexcept 对派生类构造函数的 promise : can that be used without promising noexcept on base constructor?

假设我有一个类classC:publicB{public:C()noexcept;}noexcept说明符是否需要基类的相同promise?也就是说,当我考虑使用noexcept时,我是只看C::C()的行为还是我还需要考虑B::B()是否可能抛出异常?例如,如果B::B抛出异常,它会传播到C::C还是传播到请求新类实例的代码?--如果传播到C::C,如果基类不是noexceptforconstructor,那将是避免noexceptforconstructor的原因之一。 最佳答案 技术上†不要求将基类构造函数声明为noexcep

带有 std::is_base_of 的派生类的 C++ 模板函数

我在为给定类型创建函数时遇到问题,如果它是从其他类型派生的,那么它会做某事,而对于所有其他情况,则做其他事情。我的代码:classBaseClass{};classDerivedClass:publicBaseClass{};templatevoidFunction(typenamestd::enable_if::value,T>::type&&arg){std::coutvoidFunction(T&&arg){std::cout对于DeriviedClass类和其他基于BaseClass的类,我想调用函数coutingProper,但是它couts不正确。有什么建议吗?

c# - C++ 等同于 C# 的 Func<T, TResult>

以下代码计算items集合中T的特定属性的平均值:publicdoubleAverage(IListitems,Funcselector){doubleaverage=0.0;for(inti=0;i然后我可以用lambda表达式调用它:doubleaverage=Average(items,p=>p.PropertyName);我将如何在C++中执行此操作?这是我到目前为止所拥有的:templatedoubleaverage(constvector&items,?){doubleaverage=0.0;for(inti=0;i我该如何使用C++lambda调用它?编辑:非常感谢大家,

c++ - "Empty base optimization"用于 lambda 捕获 - 被标准禁止?为什么?

我最近遇到了一种情况,我最终得到了大量嵌套的lambda表达式到buildasynchronouscomputationchains。.templatestructnode:F{node(F&&f):F{std::move(f)}{}templateautothen(FThen&&f_then){return::node{[p=std::move(*this),t=std::move(f_then)](){}};}};intmain(){autof=node{[]{}}.then([]{}).then([]{});returnsizeof(f);}我在lambda中捕获的所有对象都是空

在HTTP请求中安全传输base64编码的字符串

前言base64是一种常见的的编码格式,它可以把二进制数据编码成一个由大小写英文字母(a-zA-Z)、阿拉伯数字(0-9),以及三个特殊字符+、/、=组成的字符串。问题但是在URL传输中,+、/、=这三个特殊字符是保留字符(或者叫不安全字符),如果将编码后的base64字符串直接用于URL传输,可能会有意外发生。例如,假设base64编码后的字符串是x+y,前端访问https://www.mysite.com?name=x+y,后端接收到的name参数的值却是xy,+号不见了,变成了空格。解决方案一、在传递参数前,先对其进行URL编码只要我们在传递base64字符串之前对其进行URL编码,这些

java.lang.IllegalAccessError: class org.jetbrains.kotlin.kapt3.base.KaptContext cannot access class

Task:app:kaptGenerateStubsDebugKotlinFAILEDe:java.lang.IllegalAccessError:classorg.jetbrains.kotlin.kapt3.base.KaptContext(inunnamedmodule@0x4d1ecff7)cannotaccessclasscom.sun.tools.javac.util.Context(inmodulejdk.compiler)becausemodulejdk.compilerdoesnotexportcom.sun.tools.javac.utiltounnamedmodule@0

c++ - `Base *b = new Base;` 与 `Base *b = new Base();` 没有定义我自己的构造函数

如果我不定义自己的构造函数,Base*b=newBase;与Base*b=newBase();之间有什么区别吗? 最佳答案 初始化是标准中要遵循的一种PITA...然而,这两个已经存在的答案在他们遗漏的内容上是不正确的,这使他们确认没有区别。在没有用户定义的构造函数的类中调用newT和newT()之间存在巨大差异。在第一种情况下,对象将被默认初始化,而在第二种情况下,它将被“值初始化*”。如果对象包含任何POD子对象,那么第一个将使POD子对象保持未初始化状态,而第二个会将每个子元素设置为0。structtest{intx;std:

c++ - 我怎么说 "noexcept if execution of protected base constructor is noexcept"?

我们遇到过这种情况,想知道解决它的最佳方法templatestructA:T{A(T&&t)noexcept(noexcept(T(std::move(t)))):T(std::move(t)){}};不幸的是编译失败,因为T的移动构造函数是protected,我们只能在*this的构造函数初始化列表中调用它。使这项工作有什么变通办法,或者甚至有标准的方法吗? 最佳答案 您正在寻找noexcept(std::is_nothrow_move_constructible::value):http://en.cppreference.co

当我尝试将base64string转换为C#中的图像时

当我尝试将base64string转换为C#中的图像时,我将输出作为“System.Drawing.bitMap”而不是实际映像:publicImageDownFile(stringbase64String)//stringfile{//ConvertBase64Stringtobyte[]byte[]imageBytes=Convert.FromBase64String(base64String);MemoryStreamms=newMemoryStream(imageBytes,0,imageBytes.Length);//Convertbyte[]toImagems.Write(imag