草庐IT

VARIANT_BOOL

全部标签

c++ - 如何缩短巨大 bool 表达式的编译时间?

我需要对vector执行相当复杂的检查,而且我必须重复它成千上万次。为了提高效率,我将给定的公式翻译成C++源代码,并将其编译为高度优化的二进制文件,我在代码中调用它。公式始终是纯bool值:只有&&、||和!用过的。典型的源代码如下所示:#include#includeusingDataType=std::vector;staticconstcharT=1;staticconstcharF=0;conststd::size_tmaxidx=300;extern"C"boolcheck(constDataType&l);boolcheck(constDataType&l){assert

带有 VARIANT/bstrVal 代码的 C++ 泄漏

泄漏检查器告诉我在以下代码中分配的内存上存在内存泄漏://Getthevaluefromtheobjectasavariant.VARIANTvVal;VariantInit(&vVal);hres=clsObj->Get(fieldName.c_str(),0,&vVal,0,0);if(FAILED(hres)){(...variouscleanup/throwstuff...)}//Andgetitasawstring.wstringval(vVal.bstrVal);(...dosomestandard,non-memoryleakingstuffwiththewstring.

c++ - 为什么在增强或标准中没有 "variant"?

any优于variant的一个优点是,不需要指定它可能包含的所有类型。我注意到,随着variant可能包含的类型数量的增加,人们倾向于在某个时候切换到any,因为他们根本不跟踪所有类型了。我认为any和variant之间的混合是可能的。可以将any的“placeholder”(通过放置new)存储在aligned_storage中,大小计算为constexpr函数或模板元函数,来自最大类型的样本,最终可能会被存储。另一方面,用户不需要指定any可能包含的所有类型。如果用户尝试在其中存储大于aligned_storage的内容,则any也可能随时抛出。这样的“variant_any”类是

c++ - 在 boost::variant 中调用类型通用的方法

如果我的boost::variant中的所有类型支持相同的方法,有没有办法通用地调用它(即不为static_visitor的每个方法单独调用它)?我正在尝试让这样的东西工作:classA{voidboo(){}};classB{voidboo(){}};classC{voidboo(){}};typedefboost::variantX;voidfoo(X&d){x.boo();}但编译失败说'boo':isnotamemberof'boost::variant'.目前,我有一些类都继承自一个接口(interface),因此可以多态地使用它们的单一共享方法。我还希望能够通过访问者使用这

c++ - boost::variant for boost::arrays of arbitrary size

我想本着的spirit创建一个boost::varianttypedefboost::variant,boost::array,boost::array,...>any_int_array;泛化为N作为模板的第二个值。换句话说,一个包含任意大小数组的boost::variant。这可能吗?请注意,在上面的示例中,boost::array是我的案例之一,但对于采用单个int的任何类,它都需要是一个可行的解决方案值作为模板参数。 最佳答案 既然你在谈论具有静态已知容量的类型,你就不能用一些模板元编程来解决这个问题吗?LiveonColi

c++ - 编译器是否应该将 bool 中的任意非零值正确解释为 true?

对于真值,boolean值应该转换为1,否则为0。然而,这并没有说明它们实际上是如何存储在内存中的。如果我在bool中存储一个任意的非零值会发生什么?在将这些转换为整数时,标准是否保证正确的行为?例如,给定以下程序,#includeintmain(){boolb;memset(&b,123,sizeof(b));returnb;}标准是否保证程序会返回1? 最佳答案 不,在memset之后从bool中读取是(至少,见下文)未指定的行为,因此无法保证将返回什么值。结果可能是在特定的架构中,bool的值表示仅包含高位,在这种情况下,通过

c++ - 如何迭代 std::variant 的类型?

我有一些变体usingV=std::variant和一个带有原型(prototype)的函数Vparse(constjson&).该函数应该尝试解析所有类型(例如A、B,然后是C)直到第一次成功(它应该隐式地解析,因为及时会有很多类型)。如何实现这种东西?我们可以使用std::variant_size不知何故。Here是接近我需要的东西。我的解决方案是明确列出所有类型的解析器。Vparse(constjson&i_j){usingParser=std::function;staticconstautops=std::vector{[](constauto&j)->MaybeV{retu

c++ - boost::variant - 为什么模板参数的优先级高于 const 字符串参数

我在以下代码中看到一个我不理解的行为。关键是,如果我声明operator()的第二个重载,如下所示:booloperator()(Tother)constbooloperator()(constT&other)const程序的输出是:string但是如果我使用下面的声明:booloperator()(T&other)const输出将是:othertype有人可以解释一下为什么在后一种情况下没有调用operator()(conststring&other)吗?#include"boost/variant/variant.hpp"#include"boost/variant/apply_v

c++ - 是否可以将作用域枚举 ("enum class") 上下文转换为 bool 值?

假设我有enumclassFlags:std::uint16_t{None=0,A=0x0001,B=0x0002,C=0x0004}inlineFlagsoperator|(Flagslhs,Flagsrhs){returnstatic_cast(static_cast(lhs)|static_cast(rhs));}inlineFlagsoperator&(Flagslhs,Flagsrhs){returnstatic_cast(static_cast(lhs)&static_cast(rhs));}inlineFlagsoperator|=(Flags&lhs,Flagsrhs)

c++ - 从 std::true_type 继承 vs static constexpr const bool 成员

我知道这不是一个非常尖锐的问题。使用一个比另一个有优势(编译时间、依赖性、调试符号大小、可用性、可读性等)吗?templatestructIsSharedPtr:std::false_type{};对比templatestructIsSharedPtr{staticconstexprboolvalue=false;};相关问题...templatestructS;templatestructS{};templatestructS{};对比templatestructS;templatestructS{};templatestructS{}; 最佳答案