/usr/include/dcmtk/ofstd/ofexbl.h is in libdcmtk-dev 3.6.1~20150924-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | /*
 *
 *  Copyright (C) 2014, OFFIS e.V.
 *  All rights reserved.  See COPYRIGHT file for details.
 *
 *  This software and supporting documentation were developed by
 *
 *    OFFIS e.V.
 *    R&D Division Health
 *    Escherweg 2
 *    D-26121 Oldenburg, Germany
 *
 *
 *  Module:  ofstd
 *
 *  Author:  Jan Schlamelcher
 *
 *  Purpose:
 *      Implementing the explicit boolean type OFExplicitBool.
 *
 */
#ifndef OFEXBL_H
#define OFEXBL_H
#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
#include "dcmtk/ofstd/oftraits.h"
/** Helper class for resolving overloaded functions.
 *  OFExplicitBool can be used to restrict an overloaded function's
 *  parameter to "real" OFBool values, e.g. pointers and numeric values
 *  can NOT be converted to OFExplicitBool implicitly.
 *  @note OFBool falls back to "int" on platforms that don't support
 *   the keyword "bool". Therefore the conversion of int values to
 *   OFExplicitBool can't be prevented on those platforms.
 */
class OFExplicitBool
{
public:
#ifndef DOXYGEN
    // copy constructor
    inline OFExplicitBool( const OFExplicitBool& rhs )
    : m_Value( rhs.m_Value ) {}
    // generic constructor accepting only real OFBool values
    // distinguished via SFINAE
    template<typename Bool>
    inline OFExplicitBool( Bool value,
                           typename OFenable_if
                           <
                               OFis_same
                               <
                                    OFBool,
                                    typename OFdecay<Bool>::type
                               >::value
                           >::type* = OFnullptr )
    : m_Value( value ) {}
#else
    /** Construct an OFExplicitBool object from an explicit OFBool value.
     *  @param value either OFTrue or OFFalse.
     *  @note "explicit OFBool" is not a valid C++ type. It's just a term
     *    to explain the concept of OFExplicitBool, that is realized by
     *    SFINAE mechanisms in reality.
     */
    inline OFExplicitBool( explicit OFBool value );
#endif
    /** Implicit conversion to OFBool.
     *  This allows to use OFExplicitBool like a normal OFBool value,
     *  for example in if-statements.
     */
    inline operator OFBool() const
#ifndef DOXYGEN
    { return m_Value; }
#else
    ;
#endif
    /** Negation operator.
     *  This allows to negate OFExplicitBool like a normal OFBool value,
     *  for example to use the negated value in if-statements.
     */
    inline OFBool operator!() const
#ifndef DOXYGEN
    { return !m_Value; }
#else
    ;
#endif
private:
    /// The underlying boolean value.
    OFBool m_Value;
};
#endif // OFEXBL_H
 |