Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.iso-c++ > #2041
| 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) |
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 | Next — Next in thread | Find similar | Unroll 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