Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.iso-c++ > #2041

bedingte Ueberladung

From Stefan Reuther <stefan.news@arcor.de>
Newsgroups de.comp.lang.iso-c++
Subject bedingte Ueberladung
Date 2017-05-15 19:07 +0200
Organization A noiseless patient Spider
Message-ID <ofcu9s.18s.1@stefan.msgid.phost.de> (permalink)

Show all headers | View raw


Cheers,

aus verschiedenen Gründen möchte ich eine Funktion einmal für 'uint32_t'
überladen und einmal für 'size_t'. Dummerweise ist das auf gängigen
Systemen der gleiche zugrundeliegende Datentyp, und zweimal auf den
gleichen Typ überladen geht nicht.

Gibt es eine einfache Möglichkeit, die zweite Überladung nur anzulegen,
wenn sie notwendig ist? (Bonuspunkte für C++03-Kompatibilität.)

Die auf SFINAE basierenden Lösungen funktionieren nur, wenn eine
Abhängigkeit von einem Templateparameter drin ist.

Als Workaround hab ich jetzt erstmal ein
   void foo(if_then_else<is_same_type<uint32_t,size_t>::value,
                         uint64_t, size_t>::type);
sprich, "wenn uint32_t gleich size_t, überlade das auch noch für
uint64_t"; das geht in dem Fall zufällig und stört nicht.


  Stefan

Back to de.comp.lang.iso-c++ | Previous | NextNext in thread | Find similar | Unroll thread


Thread

bedingte Ueberladung Stefan Reuther <stefan.news@arcor.de> - 2017-05-15 19:07 +0200
  Re: bedingte Ueberladung ram@zedat.fu-berlin.de (Stefan Ram) - 2017-05-16 10:47 +0000
    Re: bedingte Ueberladung Stefan Reuther <stefan.news@arcor.de> - 2017-05-16 19:02 +0200
  Re: bedingte Ueberladung Markus Schaaf <mschaaf@elaboris.de> - 2017-05-16 13:44 +0200
    Re: bedingte Ueberladung Stefan Reuther <stefan.news@arcor.de> - 2017-05-16 18:59 +0200
  Re: bedingte Ueberladung Florian Weimer <fw@deneb.enyo.de> - 2017-05-16 20:25 +0200
    Re: bedingte Ueberladung Stefan Reuther <stefan.news@arcor.de> - 2017-05-17 18:50 +0200
      Re: bedingte Ueberladung Florian Weimer <fw@deneb.enyo.de> - 2017-05-17 19:56 +0200

csiph-web