[Bug c++/83049] New: Allow overloading of ?: conditional operator

bugzilla@poradnik-webmastera.com gcc-bugzilla@gcc.gnu.org
Sun Nov 19 14:23:00 GMT 2017


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83049

            Bug ID: 83049
           Summary: Allow overloading of ?: conditional operator
           Product: gcc
           Version: 7.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: bugzilla@poradnik-webmastera.com
  Target Milestone: ---

C++ standard states than conditional operator ?: cannot be overloaded. However
things changed since this rule was created, and now there are reasons to do
this - in fact gcc provided overloaded version of this operator for vector
extensions. Ability to overload it may be useful in user code too.

One example: in the past I crested small library which was wrapping various
SIMD instructions (SSE, AVX, NEON, and scalars as a pseudo-vector with 1
element). It provided types and defines like this:

template <typename SIMDTraits>
class SIMDVector;

struct SSEDoubleTraits;

#ifdef __SSE2__
typedef SIMDVector<SSEDoubleTraits> DoubleVector;
#define HAS_DOUBLE_VECTOR_2 1
#define DOUBLE_VECTOR_SIZE 2
#endif

With code like above, I was able to abstract out all SIMD stuff and use
DoubleVector in code which performed actual calculations. Ability to overload
?: operator in SIMDVector<> would be helpful and make code more natural.


More information about the Gcc-bugs mailing list