safe-bool-idiom

    7热度

    2回答

    我正在考虑在已经使用C++ 11功能的代码中将安全布尔成语的所有实例替换为explicit operator bool(因此旧版编译器无法识别显式转换操作员无所谓),所以我想知道它是否会导致一些微妙的问题。 因此,什么是所有可以通过从陈旧,失去光泽安全布尔成语切换到新的和有光泽explicit operator bool将可能造成的不兼容问题(哪怕是最微小的)? 编辑:我知道,无论如何,切换是一个

    1热度

    2回答

    嗨,我已经衍生从C++安全布尔成语类我的类从这个页面:The Safe Bool Idiom by Bjorn Karlsson class Element : public safe_bool<> { public: bool Exists() const; // boolean_test() is a safe_bool method bool boolean

    0热度

    1回答

    我被指出'安全布尔成语',并试图破译发生了什么(解释supplied on the site是不够的,不足以让我了解为什么它的工作原理),我决定尝试采取以下将代码分开并尝试尽可能简化它。下面的网站提供的代码: class Testable { bool ok_; typedef void (Testable::*bool_type)() const; void thi

    5热度

    3回答

    有人能解释我为什么这个代码: class safe_bool_base { //13 protected: typedef void (safe_bool_base::*bool_type)() const; void this_type_does_not_support_comparisons() const {} //18 safe_boo

    2热度

    1回答

    我试图利用boost::bool_testable<>(来自Boost.Operators)来实现一个类的安全布尔成语,但最新版本的库(本文后1.49)似乎没有了。 它去了哪里?现在有没有更好的选择,我错过了? 我无法使用C++ 11,因此无法使用不需要渲染安全布尔的语言扩展。

    160热度

    2回答

    This answer of @R. Martinho Fernandes所示,该安全-布尔成语apperently弃用C++ 11,因为它可以通过一个简单的 explicit operator bool() const; 根据在应答§4 [conv] p3标准报价替换: 当且仅当声明T t=e;格式良好时,对于某些发明的临时变量t(第8.5节),表达式e可隐式转换为类型T。某些语言结构要求将

    36热度

    8回答

    考虑从safe bool idiom以下摘录: typedef void (Testable::*bool_type)() const; operator bool_type() const; 是否有可能宣布转换功能,而不typedef的?以下不编译: operator (void (Testable::*)() const)() const;

    0热度

    2回答

    为了支持没有explicit关键字的编译器(例如MSVC 2012),我必须实现安全的bool惯用法。应该对bool进行检查的类正在建模一个指向许多类的指针,因此它应该可以转换为这些指针。下面的代码描述了一个思路:如果我们使用基于explicit operator bool()执行一切正常 // Uncomment this line to change implementation to 'sa

    9热度

    2回答

    我还有一个问题涉及到安全布尔成语: typedef void (Testable::*bool_type)() const; // const necessary? void this_type_does_not_support_comparisons() const {} // const necessary? operator bool_type() const { r