草庐IT

enable_cli

全部标签

c++ - 如何使用 enable_if 根据类的模板参数启用成员函数

在代码中:templatestructis_builtin{enum{value=0};};templatestructis_builtin{enum{value=1};};templatestructis_builtin{enum{value=1};};templatestructis_builtin{enum{value=1};};templatestructMy{typenameenable_if::value,void>::typef(Targ){std::cout::value,void>::typef(Targ){std::coutm;Myma;m.f(1);ma.f(a)

c++ - enable_if 和转换运算符?

有没有机会将enable_if与类型转换运算符一起使用?看起来很棘手,因为返回类型和参数列表都是隐式的。 最佳答案 根据我所做的小研究(并忽略Johannes的c++0x评论),我的回答是这取决于您想要什么enable_if为了。如果要转换操作为T存在与否来自类型T那么似乎答案是否定的,在C++03中没有办法(正如Ugo所说)。但如果您需要enable_if根据T的类型更改运算符(operator)的行为那么是的,有一种解决方法是调用启用的辅助函数(称为to,正如Matthieu建议的那样)。#include#include#inc

c# - 如何从我的 C++/CLI 代码进入非托管 C++ 库

我的解决方案中有以下三个项目:1.C#库2.C++/CLI托管代码3.C++非托管代码我确实在我的C#项目中选中了“启用非托管代码调试”,并在Debug/Win32中构建了两个C++项目。但是,我无法进入非托管代码-当我F11调用任何非托管方法时,它会显示一些随机/错误代码然后退出。因为我的单元测试通过了,我知道我的非托管代码确实执行了。我错过了什么? 最佳答案 当我遇到这个问题时,它来自以下原因之一:1)未选中启用非托管代码调试。你已经解决了这个问题。2)将EXE构建为x64或任何CPU(他们说x64可以工作,但事实并非如此)。我

c# - C++ 和 C# 互操作性 : P/Invoke vs C++/CLI

在寻找C#和C++之间互操作方法的过程中,我发现了article这解释了P/Invoke。我读了很多文章,声称C++/CLI不是完全的C++,需要一些努力来修改原始C++代码。我想问当我有一些我想从C#对象中使用的C++对象(代码/数据)时,最佳方式是什么。看来,为了使用P/Invoke,我应该提供C风格的API。这是真的吗?我的意思是,有没有办法将C++对象导出到C#,比如带有P/Invoke的SWIG?或者,我是否必须为此使用SWIG?将C++更改为C++/CLI有多难?与将C++重写为C#相比,是否值得尝试?C++设计得很好,所以用C#实现它并不是什么大问题。(题外话)有没有反过

c++ - std::enable_if 是如何工作的?

我刚刚问了这个问题:std::numeric_limitsasaCondition我了解std::enable_if将定义方法的返回类型的用法,有条件地导致方法编译失败。templatetypenamestd::enable_if::is_integer,void>::typefoo(constT&bar){isInt(bar);}我不明白的是第二个参数以及当std::enable_if声明为模板语句的一部分时看似毫无意义的赋值,如Rapptzanswer.template::value,int>::type=0>voidfoo(constT&bar){isInt();}

c++ - 使用不同的 enable_if 条件选择成员函数

我正在尝试根据类模板参数确定调用哪个版本的成员函数。我试过这个:#include#includetemplatestructPoint{voidMyFunction(typenamestd::enable_if::value,T>::type*=0){std::cout::value,float>::type*=0){std::coutintPoint;intPoint.MyFunction();PointfloatPoint;floatPoint.MyFunction();}我认为是说“如果T是int,则使用第一个MyFunction,如果T不是int,则使用第二个MyFunctio

c++ - C++ CLI 是 C++ 的超集吗?

C++CLI编译器能够不加修改地编译一些大型的C++类吗?C++CLI是C++的超集吗? 最佳答案 根据Wikipedia:C++/CLIshouldbethoughtofasalanguageofitsown(withanewsetofkeywords,forexample),insteadoftheC++superset-orientedManagedC++ 关于c++-C++CLI是C++的超集吗?,我们在StackOverflow上找到一个类似的问题:

c++ - 如何将 std::enable_if 与自推断返回类型一起使用?

C++14将具有可以根据返回值推断返回类型的函数。autofunction(){return"helloworld";}我可以将此行为应用于使用enable_if的函数吗?对于SFINAE的返回类型习语?例如,让我们考虑以下两个函数:#include#include//Thisfunctionischosenwhenanintegraltypeispassedintemplateautofunction(Tt)->typenamestd::enable_if::value>::type{std::coutautofunction(Tt)->typenamestd::enable_if:

C++CLI。 native 部分是否用纯 C++ 编写但在 CLI 中编译的速度与纯 native C++ 一样快?

我想将音频计算委托(delegate)给C++层,但通过WPFGUI处理和编辑音频内容。我简要了解了C++/CLI,我想知道:我应该使用C++/CLI作为C#GUI和C++音频管理之间的中间层或者我应该简单地将我的代码放在C++/CLI中并期望它以相同的方式编译,因此同样高效。编辑:因为燃烧的war可能会开始。这是指向benchmarksgame的链接,这清楚地表明C/C++是速度赢家。我在问:我应该在C++Dll中还是在C++CLI程序集中编写C++。 最佳答案 在C++/CLI中,托管类型(例如refclass)及其成员被编译为

带有 enable_if : different behaviour with g++ and clang 的 C++ 模板重载

在解决基类的模板化成员函数的重载时,我观察到g++(5.2.1-23)和clang(3.8.0)之间的不同行为,-std=c++14.#include#includestructBase{templateautoa(Tt)->void{std::coutstructDerived:publicBase{usingBase::a;templateautoa(Tt)->std::enable_if_t{std::coutd;d.a(1);//failswithg++,prints"true"withclangDerivedd2;d2.a(1);//failswithclang++,prin