草庐IT

some_function_returning_an_option

全部标签

c++ - 使用 std::function 时如何解决此 <unresolved overloaded function type> 错误?

在以下(有效的)代码示例中,模板化的register_enum()函数用于迭代枚举并调用用户提供的回调以将枚举值转换为C字符串。所有枚举都在一个类中定义,枚举到字符串的转换是使用静态to_cstring(enum)函数完成的。当一个类(如下面的着色器类)有多个枚举和相应的重载to_cstring(enum)函数时,编译器无法决定将哪个是正确的to_cstring()函数传递给register_enum()。我认为代码比我能解释得更好...#include#include//ActualcodeusesLua,butforsimplification//I'llhideitinthise

C++ 将 std::function 对象传递给可变参数模板

我想将一个可调用对象(std::function对象)传递给一个类Foo.可调用对象引用另一个具有任意参数的类的成员方法,因此Foo必须是可变参数模板。考虑这段代码:structBar{voidMemberFunction(intx){}};templateclassFoo{public:Foo(std::functionf){}};intmain(){Foom1(&Bar::MemberFunction);return0;}这编译得很好。现在我想写一个工厂函数MakeFoo()返回unique_ptr到Foo对象:templatestd::unique_ptr>MakeFoo(std

c++ - 经典C++(C with Classes)的Call/Return特性,现代语言有哪些?

在TheDesignandEvolutionofC++的第57页上,Dr.Stroustrup谈到了一个功能,该功能最初是CwithClasses的一部分,但它不是现代C++(标准C++)的一部分。该功能称为call/return。这是一个例子:classmyclass{call(){/*dosomethingbeforeeachcalltoafunction.*/}return(){/*dosomethingelseaftereachcalltoafunction.*/}...};我觉得这个功能非常有趣。有没有现代语言有这个特殊的功能? 最佳答案

具有 decltype : substitution failure becomes an error? 的 C++ SFINAE

此代码有效://CodeA#include#include#includeusingnamespacestd;templatestructS{template()))>::value>::type>S(Iter){coutv;Ss1(v.begin());//stdout:S(Iter)Ss2(1);//stdout:S(int)}但是下面这段代码不起作用。在下面的代码中,我只想继承std::enable_if,所以类is_iter_of将具有成员typedeftype如果选择的版本std::enable_if具有成员typedeftype。//CodeB#include#includ

c++ - constexpr std::optional 重置

我正在审查C++-17std::optional类模板的接口(interface),并注意到reset和assignment来自nullopt的未标记为constexpr。这是一个疏忽还是无法将此操作标记为constexpr的原因? 最佳答案 有一个原因,就是[expr.const]以前禁止:anassignmentexpressionorinvocationofanassignmentoperator([class.copy])thatwouldchangetheactivememberofaunion;由于P1330:Chang

c++ - G++、clang++ 和 std::function

我只是在玩弄来自C++11的新std::function,我写了一个使用clang++3.2和英特尔C++编译器13.1编译但不使用g++4.8编译的示例。在我将其报告为错误之前,我想我应该检查一下我没有做一些非常愚蠢的事情,并且这实际上应该可以编译。那么,以下代码是否适用于c++11?templatevoidmap(C&c,std::functionf){for(auto&x:c){x=f(x);}}intmain(){std::vectorv;v.push_back(1);v.push_back(2);v.push_back(3);map(v,[](intx){returnx+2;

【报错】Error:Kotlin: Module was compiled with an incompatible version of Kotlin. The binary

文章目录报错:解决方案:报错:Error:Kotlin:ModulewascompiledwithanincompatibleversionofKotlin.Thebinaryversionofitsmetadatais1.7.1,expectedversionis1.1.16.解决方案:非常简单:Build—>Rebuildproject,再运行就没问题了。如果不行可以尝试:在项目的构建文件(如pom.xml)中查找Kotlin相关的依赖或配置项,确认项目中所使用的Kotlin版本是否与代码库中的Kotlin版本一致。修改成一致后,mvnclean清理构建缓存,再重新构建即可。或者可以尝试:

c++ - 使用 lambda 从 std::function 返回类型推导模板参数类型

首先,我使用的是C++11(我的主题很糟糕)。我想做的是编写一个通用模板函数,该函数实现在其他编程语言中通常称为sort_by的东西。它涉及为范围内的每个成员精确计算一次任意标准,然后根据这些标准对该范围进行排序。这样的标准不一定是POD,它必须是低于可比性。对于std::less不起作用的事情,调用者应该能够提供她自己的比较仿函数。我已经成功编写了使用以下签名的所述函数:template>voidsort_by(Titerfirst,Titerlast,std::function::value_typeconst&)>criterion_maker,Tcomparecomparato

c++ - SSE2 : Double precision log function

我需要日志功能的开源(无许可证限制)实现,有签名的东西__m128d_mm_log_pd(__m128d);它在英特尔短vector数学库(ICC的一部分)中可用,但ICC既不是免费的也不是开源的。我正在寻找仅使用内部函数的实现。它应该使用特殊的有理函数逼近。我需要一些几乎与cmath日志一样准确的东西,比如9-10位十进制数字,但速度更快。 最佳答案 我相信log2更容易计算。您可以将您的数字乘以/除以2的幂(非常快),使其位于(0.5,2],然后您使用Padeapproximant(取M接近N),这很容易一次又一次地得出all,

c++ - Callable 概念和 std::is_function 类型特征有什么区别?

C++17将有一个Callable概念,我想知道std::is_function::value的类型到底有什么区别?是true.它们等价吗?一个是另一个的超集吗? 最佳答案 C++17willhaveaCallableconcept自C++11以来,它就存在于标准中。Aretheyequivalent?Isoneasupersetoftheother?不,事实上,它们完全不相交。Callable仅适用于对象类型,并且包括从指向成员的指针到具有重载的operator()的类型到具有从函数指针到函数指针的隐式转换的类型的所有内容他们自己