In jedem Frame schmierte der Treiber ab, und musste nach zwei Sekunden vom Watchdog neugestartet werden. Spaß. Ich bin froh, dass ich das Fenster noch abschießen konnte.Debug console hat geschrieben:First-chance exception at 0x000007fefd6dcacd (KernelBase.dll) in .exe: Microsoft C++ exception: _com_error at memory location 0x0025e800..
First-chance exception at 0x000007fefd6dcacd (KernelBase.dll) in .exe: Microsoft C++ exception: _com_error at memory location 0x0025e760..
First-chance exception at 0x000007fefd6dcacd (KernelBase.dll) in .exe: Microsoft C++ exception: _com_error at memory location 0x0025eaa0..
First-chance exception at 0x000007fefd6dcacd (KernelBase.dll) in .exe: Microsoft C++ exception: _com_error at memory location 0x0025e800..
First-chance exception at 0x000007fefd6dcacd (KernelBase.dll) in .exe: Microsoft C++ exception: _com_error at memory location 0x0025e760..
Jammer-Thread
Re: Jammer-Thread
Ich hatte gerade einen Driver-Bug.
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: Jammer-Thread
Systemupdate... AngelScript kompiliert nicht mit gcc 4.7 ...
- CodingCat
- Establishment
- Beiträge: 1857
- Registriert: 02.03.2009, 21:25
- Wohnort: Student @ KIT
- Kontaktdaten:
Re: Jammer-Thread
Wie wunderbar, wenn es einfache Lösungen gibt ... ;)
- Dateianhänge
-
- walpha.png (9.53 KiB) 7848 mal betrachtet
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Re: Jammer-Thread
Dürfte ich fragen, für welche Werte von \($a$\) die Lösung relevant ist? Z.B. gibt es für \($a > \frac{3}{2}$\) drei Lösungen:


- Krishty
- Establishment
- Beiträge: 8422
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Jammer-Thread
Vorhin kamen alle versäumten SMSen der letzten Tage an, nachdem ich mein Handy neu gestartet hatte.
Ich weiß nicht, ob es am Netz oder am Handy lag, aber da das Handy seit einem Monat nicht abgeschaltet wurde, und die Nachrichten keine zwei Minuten nach dem Boot eintrudelten, halte ich einen Programmfehler im Handy für am wahrscheinlichsten. Echt zum Kotzen. (Anrufe gingen übrigens.)
Mein PlayStation 2-Controller schickt unentwegt Input, viele Mal pro Sekunde, obwohl sich nichts geändert hat. Ich weiß nicht, ob das bei den Controllern immer so ist oder am PS-to-PC-Adapter liegt. Es gibt mir jedenfalls ein unangenehmes Gefühl.
Das Gegenteil ist aber auch nicht gut: Mein Joystick sendet nur, wenn sich was ändert. Das bedeutet, dass ich beim Programmstart kurz pollen muss, um seinen Zustand abzufragen — sonst reagierte das Programm nicht auf den Joystick, bevor man ihn zum ersten Mal bewegt; das wäre ziemlich hässlich.
RawInput verlangt von mir eine dynamische Allokation pro WM_INPUT-Nachricht. Man kann sie folgendermaßen umgehen:
Ich weiß nicht, ob es am Netz oder am Handy lag, aber da das Handy seit einem Monat nicht abgeschaltet wurde, und die Nachrichten keine zwei Minuten nach dem Boot eintrudelten, halte ich einen Programmfehler im Handy für am wahrscheinlichsten. Echt zum Kotzen. (Anrufe gingen übrigens.)
Mein PlayStation 2-Controller schickt unentwegt Input, viele Mal pro Sekunde, obwohl sich nichts geändert hat. Ich weiß nicht, ob das bei den Controllern immer so ist oder am PS-to-PC-Adapter liegt. Es gibt mir jedenfalls ein unangenehmes Gefühl.
Das Gegenteil ist aber auch nicht gut: Mein Joystick sendet nur, wenn sich was ändert. Das bedeutet, dass ich beim Programmstart kurz pollen muss, um seinen Zustand abzufragen — sonst reagierte das Programm nicht auf den Joystick, bevor man ihn zum ersten Mal bewegt; das wäre ziemlich hässlich.
RawInput verlangt von mir eine dynamische Allokation pro WM_INPUT-Nachricht. Man kann sie folgendermaßen umgehen:
- Die Größe der Reports eines HIDs ist konstant. Beim Start der Anwendung (oder, sobald ein neues Gerät angeschlossen wird) enumeriert man alle angeschlossenen Geräte.
- Mit den Preparsed Data (also der Protokolldefinition) ruft man HidP_GetCaps() auf. Damit bekommt man die Eigenschaften des HIDs angezeit, wozu auch die Größe eines Reports gehört.
- Von allen Reportgrößen bestimmt man das Maximum. Dazu berechnet man die Unkosten durch RawInput-Header, die vor dem Report platziert werden.
- Einen Speicherbereich dieser Größe allokiert man einmal und nutzt ihn, um die Daten jeder WM_INPUT zu empfangen.
Re: Jammer-Thread
Code: Alles auswählen
static size_t const numberIndices =
std::extent<decltype(indices)>::value *
std::extent<decltype(
static_cast<std::remove_extent<decltype(indices)>::type *>(nullptr)->theIndices
)>::value;-
glassbear
- Establishment
- Beiträge: 324
- Registriert: 08.04.2003, 18:09
- Alter Benutzername: Enrico_
- Echter Name: Enrico
- Wohnort: San Diego
- Kontaktdaten:
Re: Jammer-Thread
Bloeder Steam-Summer-Sale. Hab eindeutig zu viel gekauft :lol:
Ein Hoch auf uns Männer... Auf die Frau, die uns HAT ( oder hat, und nicht weiß, dass sie uns hat ) ...auf die Idiotinnen ... besser gesagt VOLLPFOSTINNEN ... die uns hatten und uns verloren haben ... und auf die GLÜCKLICHEN, die das Vergnügen & Glück haben werden uns kennenzulernen!
- Schrompf
- Moderator
- Beiträge: 5402
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: Jammer-Thread
Joa, gut, dass der Steam Sale vorbei ist. Hab meine Sammlung von Spielen auf Vorrat heftig erweitert, ohne dass sich meine Chancen, meinen Rückstand aufzuholen, nennenswert verbessert hätten. Das wiederrum liegt an Battlefield 3, womit ich meine abendliche Zockzeit nun primär verbringe.
Auch was gejammert: es ist erstaunlich kompliziert, einen Textursampler mit bilinearem Filter selbst zu schreiben. Modulo und Konsorten sind um den Nullpunkt rum furchtbar inkonsistent. Mein aktueller Code dafür ist nun voll mit floor() und Konsorten... wahrscheinlich gibt es dafür auch einen eleganten Weg, aber ich finde ihn nicht.
Auch was gejammert: es ist erstaunlich kompliziert, einen Textursampler mit bilinearem Filter selbst zu schreiben. Modulo und Konsorten sind um den Nullpunkt rum furchtbar inkonsistent. Mein aktueller Code dafür ist nun voll mit floor() und Konsorten... wahrscheinlich gibt es dafür auch einen eleganten Weg, aber ich finde ihn nicht.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: Jammer-Thread
Habe gerade die A new dawn-Demo ausprobiert. Begeisterungsgrad: Medium.
- Krishty
- Establishment
- Beiträge: 8422
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Jammer-Thread
Verdammter Intel-Chipsatz im Eee PC kriegt Clipping nicht richtig gebacken. Flach aufs Terrain gucken flimmert die Scheiße heraus aus dir. Es ist zum Kotzen, dass man sowas Fundamentales verkacken kann. Ich habe hier ein niedrig aufgelöstes Mesh als Landschaft und während man sich drüberbewegt wird wortwörtlich der halbe Bildschirm von Einzelbild zu Einzelbild abwechselnd himmelblau und dann wieder felsdunkel. I can't even …
Warum ist beim Erstellen einer Antwort hier auf ZFX der Eingabefokus nicht im Antwortfeld? Ich habe hier bloß ein Touchpad, das außerdem fast einen Meter von mir wegsteht. Ich will ALLES via Tastatur bedienen können. Was wollt ihr denn machen wenn ein körperlich schwer Behinderter auf ZFX Rants über falsch implementiertes Clipping in den Jammer-Thread klatschen will? "Dummes ZFX. Lässt mich nicht meine Antwort eingeben."
Warum ist beim Erstellen einer Antwort hier auf ZFX der Eingabefokus nicht im Antwortfeld? Ich habe hier bloß ein Touchpad, das außerdem fast einen Meter von mir wegsteht. Ich will ALLES via Tastatur bedienen können. Was wollt ihr denn machen wenn ein körperlich schwer Behinderter auf ZFX Rants über falsch implementiertes Clipping in den Jammer-Thread klatschen will? "Dummes ZFX. Lässt mich nicht meine Antwort eingeben."
-
kaiserludi
- Establishment
- Beiträge: 467
- Registriert: 18.04.2002, 15:31
Re: Jammer-Thread
Bei Schnellantwort habe ich den Fokus von Anfang an, bei Erweitert nach 2 mal Tab drücken.Krishty hat geschrieben: Warum ist beim Erstellen einer Antwort hier auf ZFX der Eingabefokus nicht im Antwortfeld? Ich habe hier bloß ein Touchpad, das außerdem fast einen Meter von mir wegsteht. Ich will ALLES via Tastatur bedienen können. Was wollt ihr denn machen wenn ein körperlich schwer Behinderter auf ZFX Rants über falsch implementiertes Clipping in den Jammer-Thread klatschen will? "Dummes ZFX. Lässt mich nicht meine Antwort eingeben."
"Mir ist auch klar, dass der Tag, an dem ZFX und Developia zusammengehen werden der selbe Tag sein wird, an dem DirectGL rauskommt."
DirectGL, endlich ist es da :)
"According to the C++ standard, it's "undefined". That's a technical term that means, in theory, anything can happen: the program can crash, or keep running but generate garbage results, or send Bjarne Stroustrup an e-mail saying how ugly you are and how funny your mother dresses you." :shock:[/size]
DirectGL, endlich ist es da :)
"According to the C++ standard, it's "undefined". That's a technical term that means, in theory, anything can happen: the program can crash, or keep running but generate garbage results, or send Bjarne Stroustrup an e-mail saying how ugly you are and how funny your mother dresses you." :shock:[/size]
- Krishty
- Establishment
- Beiträge: 8422
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Jammer-Thread
Stimmt, bei Schnellantwort klappt es.
Bei der erweiterten Antwort (die ich zuerst sehe, wenn ich mich zum Antworten einlogge) kann ich nicht einmal sagen, wo der Fokus ist. (Bei den Beitragssymbolen?) Brauchen wir Betreff überhaupt? Benutzt das wer?
Bei der erweiterten Antwort (die ich zuerst sehe, wenn ich mich zum Antworten einlogge) kann ich nicht einmal sagen, wo der Fokus ist. (Bei den Beitragssymbolen?) Brauchen wir Betreff überhaupt? Benutzt das wer?
Re: Jammer-Thread
Für extended-length-Pfade gilt: Stellt man das \\?\ einem Pfad voran, welcher / als Separator enthält, so schlägt CreateFile fehlt. Dahingegen klappt es bei Pfaden mit \ als Separator problemlos.
Re: Jammer-Thread
eXile hat geschrieben:Für extended-length-Pfade gilt: Stellt man das \\?\ einem Pfad voran, welcher / als Separator enthält, so schlägt CreateFile fehlt. Dahingegen klappt es bei Pfaden mit \ als Separator problemlos.
Quelle: http://msdn.microsoft.com/en-us/library ... s.85).aspxMSDN hat geschrieben:Note File I/O functions in the Windows API convert "/" to "\" as part of converting the name to an NT-style name, except when using the "\\?\" prefix as detailed in the following sections.
...
For file I/O, the "\\?\" prefix to a path string tells the Windows APIs to disable all string parsing and to send the string that follows it straight to the file system.
Ohne Input kein Output.
Re: Jammer-Thread
Lustig, die Seite hatte ich bestimmt schon zehnmal gelesen, aber irgendwie haben ich die betreffenden Stellen immer überlesen. Besten Dank für den Link. Lustigerweise klappt es im Windows Explorer unabhängig vom verwendeten Separator.
-
kaiserludi
- Establishment
- Beiträge: 467
- Registriert: 18.04.2002, 15:31
Re: Jammer-Thread
Ich habe folgenden Code:
Ein Versuch, die template-Funktion aufzurufen, führt nun unter MCVC++ zur Fehlermeldung "error C2660: 'Foo::doSomething' : function does not take 1 arguments".
Offensichtlich sieht der Compiler also nur die einfache Funktion, nicht aber die Templatefunktion.
Nach ein wenig Herumspielen mit der Klasse weiß ich, dass
mir die gleiche Fehlermeldung einbringt, wähend
anstandslos kompiliert.
Die Fehlermeldung ist also einfach nur sehr ungünstig, da sie als Folgefehler eines Errors "could not deduce template argument" verhindert, dass der "could not deduce template argument" Fehler überhaupt angezeigt wird.
Bei template<typename FType> void doSomething(int param); ist natürlich klar, dass der Compiler keine Möglichkeit hat an Hand des Aufrufs herauszufinden, für was für einen Typ für FType er die Funktion nun instanziieren soll.
Bei template<typename FType> void doSomething(typename ConfirmAllowedType<FType>::type param); hingegen verfügt er doch über FType in der Signatur, ist aber anscheinend überfordert, den Typ für FType zu ermitteln, wenn er als Parameter statt einem FType ein komplexeres Konstrukt bekommt.
Code: Alles auswählen
template<typename CType> struct ConfirmAllowedType;
template<> struct ConfirmAllowedType<short>
{
typedef short type;
};
Code: Alles auswählen
class Foo
{
public:
void doSomething(void);
template<typename FType> void doSomething(typename ConfirmAllowedType<FType>::type param);
};
Offensichtlich sieht der Compiler also nur die einfache Funktion, nicht aber die Templatefunktion.
Nach ein wenig Herumspielen mit der Klasse weiß ich, dass
Code: Alles auswählen
class Foo
{
public:
void doSomething(void);
template<typename FType> void doSomething(int param);
};
Code: Alles auswählen
class Foo
{
public:
void doSomething(void);
template<typename FType> void doSomething(FType param);
};
Die Fehlermeldung ist also einfach nur sehr ungünstig, da sie als Folgefehler eines Errors "could not deduce template argument" verhindert, dass der "could not deduce template argument" Fehler überhaupt angezeigt wird.
Bei template<typename FType> void doSomething(int param); ist natürlich klar, dass der Compiler keine Möglichkeit hat an Hand des Aufrufs herauszufinden, für was für einen Typ für FType er die Funktion nun instanziieren soll.
Bei template<typename FType> void doSomething(typename ConfirmAllowedType<FType>::type param); hingegen verfügt er doch über FType in der Signatur, ist aber anscheinend überfordert, den Typ für FType zu ermitteln, wenn er als Parameter statt einem FType ein komplexeres Konstrukt bekommt.
"Mir ist auch klar, dass der Tag, an dem ZFX und Developia zusammengehen werden der selbe Tag sein wird, an dem DirectGL rauskommt."
DirectGL, endlich ist es da :)
"According to the C++ standard, it's "undefined". That's a technical term that means, in theory, anything can happen: the program can crash, or keep running but generate garbage results, or send Bjarne Stroustrup an e-mail saying how ugly you are and how funny your mother dresses you." :shock:[/size]
DirectGL, endlich ist es da :)
"According to the C++ standard, it's "undefined". That's a technical term that means, in theory, anything can happen: the program can crash, or keep running but generate garbage results, or send Bjarne Stroustrup an e-mail saying how ugly you are and how funny your mother dresses you." :shock:[/size]
- CodingCat
- Establishment
- Beiträge: 1857
- Registriert: 02.03.2009, 21:25
- Wohnort: Student @ KIT
- Kontaktdaten:
Re: Jammer-Thread
Leider spielen hier viele Sachen mit rein. Zunächst einmal sieht das, was du da versuchst, stark nach SFINAE aus. SFINAE nutzt genau das beschriebene Verhalten, um bestimmte Template-Überladungen in Abhängigkeit von gewissen Eigenschaften der übergebenen Typen an- oder abzuschalten. SFINAE ist aber nur deshalb möglich, weil der Compiler in den von dir gezeigten Fällen keine Fehlermeldungen zu den Funktionen bringt, die aufgrund unvollständiger Angaben zur Deduktion oder ungültiger Signatur durch abhängige Typen nicht kompilierbar wären.kaiserludi hat geschrieben:Die Fehlermeldung ist also einfach nur sehr ungünstig, da sie als Folgefehler eines Errors "could not deduce template argument" verhindert, dass der "could not deduce template argument" Fehler überhaupt angezeigt wird.
Nein, der Compiler ist nicht überfordert, sondern der Sprachstandard schränkt Deduktion explizit ein. Das, was du hier tust, sieht zwar in dieser Form aus, als wäre es trivial lösbar. Tatsächlich bieten Templates aber mit (partiellen) Spezialisierungen schlichtweg zu viele Freiheitsgrade, um derartige Konstrukte im allgemeinen Fall zuverlässig und eindeutig auflösen zu können.kaiserludi hat geschrieben:Bei template<typename FType> void doSomething(int param); ist natürlich klar, dass der Compiler keine Möglichkeit hat an Hand des Aufrufs herauszufinden, für was für einen Typ für FType er die Funktion nun instanziieren soll.
Bei template<typename FType> void doSomething(typename ConfirmAllowedType<FType>::type param); hingegen verfügt er doch über FType in der Signatur, ist aber anscheinend überfordert, den Typ für FType zu ermitteln, wenn er als Parameter statt einem FType ein komplexeres Konstrukt bekommt.
Eine korrekte Fassung dessen, was du hier versuchst, sieht wie folgt aus:
Code: Alles auswählen
template<typename CType> struct ConfirmAllowedType { static const bool value = false; };
template<> struct ConfirmAllowedType<short> { static const bool value = true; };
// enable_if ist Teil von C++11!
template <bool B, class T = void> struct enable_if;
template <class T> struct enable_if<true, T> { typedef T type; };
class Foo
{
public:
void doSomething(void);
template<typename FType> typename enable_if<ConfirmAllowedType<FType>::value>::type doSomething(FType param);
};Eine andere Variante, näher an deiner, wäre:
Code: Alles auswählen
template<typename CType> struct ConfirmAllowedType;
template<> struct ConfirmAllowedType<short> { typedef short type; };
template <class B, class T = void> struct enable_on { typedef T type; };
class Foo
{
public:
void doSomething(void);
template<typename FType> typename enable_on<ConfirmAllowedType<FType>::type>::type doSomething(FType param);
};Code: Alles auswählen
template<typename CType> struct ConfirmAllowedType;
template<> struct ConfirmAllowedType<short> { typedef short type; };
class Foo
{
public:
void doSomething(void);
template<typename FType> void doSomething(FType param, typename ConfirmAllowedType<FType>::type* = nullptr);
};alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
-
kaiserludi
- Establishment
- Beiträge: 467
- Registriert: 18.04.2002, 15:31
Re: Jammer-Thread
Meine Lösung vorhin war, statt typename ConfirmAllowedType<FType>::type weiterhin einfach nur FType zu übergeben und dann in der ersten Zeile im Body der Funktion, in der ich eh für einen statischen Assert auf ein static Member von FType zugegriffen habe, statt FType nun ConfirmAllowedType<FType>::type zu verwenden, da ie Deduktion an der Stelle ja schon erfolgt ist und der ganze Zweck hinter ConfirmAllowedType eh nur ist, die Verwendung nicht unterstützter Typen bereits zur Compilierzeit und nicht erst zur Laufzeit abzufangen.
Deine Varianten sehen allerdings auch interessant aus. Nur: In den ersten beiden Fällen habe ich dann ja einen Rückgabewert, den auch irgendwer auslesen könnte, im letzten Fall einen zusätzlichen Parameter, bei dem auch jemand versuchen könnte, was anderes als den Default zu übergeben, sprich ich verkompliziere quasi in allen 3 Fällen das Interface mit Dummies, bei denen ein Aufrufer sich erst wieder im Klaren sein muss, daass es sich um Dummies handelt.
PS:
Müsste typename ConfirmAllowedType<FType>::type* = nullptr nicht typename ConfirmAllowedType<FType>::type* someExtremelyCoolParameterName = nullptr heißen?
Deine Varianten sehen allerdings auch interessant aus. Nur: In den ersten beiden Fällen habe ich dann ja einen Rückgabewert, den auch irgendwer auslesen könnte, im letzten Fall einen zusätzlichen Parameter, bei dem auch jemand versuchen könnte, was anderes als den Default zu übergeben, sprich ich verkompliziere quasi in allen 3 Fällen das Interface mit Dummies, bei denen ein Aufrufer sich erst wieder im Klaren sein muss, daass es sich um Dummies handelt.
PS:
Müsste typename ConfirmAllowedType<FType>::type* = nullptr nicht typename ConfirmAllowedType<FType>::type* someExtremelyCoolParameterName = nullptr heißen?
"Mir ist auch klar, dass der Tag, an dem ZFX und Developia zusammengehen werden der selbe Tag sein wird, an dem DirectGL rauskommt."
DirectGL, endlich ist es da :)
"According to the C++ standard, it's "undefined". That's a technical term that means, in theory, anything can happen: the program can crash, or keep running but generate garbage results, or send Bjarne Stroustrup an e-mail saying how ugly you are and how funny your mother dresses you." :shock:[/size]
DirectGL, endlich ist es da :)
"According to the C++ standard, it's "undefined". That's a technical term that means, in theory, anything can happen: the program can crash, or keep running but generate garbage results, or send Bjarne Stroustrup an e-mail saying how ugly you are and how funny your mother dresses you." :shock:[/size]
- CodingCat
- Establishment
- Beiträge: 1857
- Registriert: 02.03.2009, 21:25
- Wohnort: Student @ KIT
- Kontaktdaten:
Re: Jammer-Thread
Okay, dann wäre ein static_assert(ConfirmAllowedType<FType>::value, "Given FType not allowed") aber vermutlich hilfreicher als irgendein Fehler durch die Referenzierung eines nicht existenten abhängigen Typnamens, hier ConfirmAllowedType<FType>::type.kaiserludi hat geschrieben:Meine Lösung vorhin war, statt typename ConfirmAllowedType<FType>::type weiterhin einfach nur FType zu übergeben und dann in der ersten Zeile im Body der Funktion, in der ich eh für einen statischen Assert auf ein static Member von FType zugegriffen habe, statt FType nun ConfirmAllowedType<FType>::type zu verwenden, da ie Deduktion an der Stelle ja schon erfolgt ist und der ganze Zweck hinter ConfirmAllowedType eh nur ist, die Verwendung nicht unterstützter Typen bereits zur Compilierzeit und nicht erst zur Laufzeit abzufangen.
Dein Anwendungsfall unterscheidet sich aber stark von dem, was ich hier gezeigt habe. Während durch static_assert bzw. Referenzierung im Funktionsrumpf immer eine Fehlermeldung ausgelöst wird, kommt es in den von mir gezeigten Varianten gerade zu keiner Fehlermeldung; stattdessen werden dort die fehlerhaften Überladungen einfach stillschweigend abgeschaltet.kaiserludi hat geschrieben:Deine Varianten sehen allerdings auch interessant aus.
Nein, der Rückgabetyp ist in allen drei Fällen void. Und ja, der zusätzliche Parameter in der Anwenderschnittstelle ist unschön. Ich habe die Variante hier der Vollständigkeit halber aufgeführt, weil es sich hierbei gewissermaßen und den Low-Level-Basisfall von SFINAE handelt. Insbesondere lässt sich damit eine Fülle von Helfer-Templates zur Analyse von Typeigenschaften formulieren. Davon abgesehen ist der Dummy-Parameter bei Konstruktoren manchmal unvermeidbar, weil diese keinen Rückgabetypen besitzen.kaiserludi hat geschrieben:Nur: In den ersten beiden Fällen habe ich dann ja einen Rückgabewert, den auch irgendwer auslesen könnte, im letzten Fall einen zusätzlichen Parameter, bei dem auch jemand versuchen könnte, was anderes als den Default zu übergeben, sprich ich verkompliziere quasi in allen 3 Fällen das Interface mit Dummies, bei denen ein Aufrufer sich erst wieder im Klaren sein muss, daass es sich um Dummies handelt.
Wenn du den Parameter benennen willst; ohne Name wird aber eventuell deutlicher, dass es sich um keinen echten Parameter handelt.kaiserludi hat geschrieben:PS: Müsste typename ConfirmAllowedType<FType>::type* = nullptr nicht typename ConfirmAllowedType<FType>::type* someExtremelyCoolParameterName = nullptr heißen?
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
-
kaiserludi
- Establishment
- Beiträge: 467
- Registriert: 18.04.2002, 15:31
Re: Jammer-Thread
Ah, mir war gar nicht klar, dass default values auch für unbenannte Parameter funktionieren.
"Mir ist auch klar, dass der Tag, an dem ZFX und Developia zusammengehen werden der selbe Tag sein wird, an dem DirectGL rauskommt."
DirectGL, endlich ist es da :)
"According to the C++ standard, it's "undefined". That's a technical term that means, in theory, anything can happen: the program can crash, or keep running but generate garbage results, or send Bjarne Stroustrup an e-mail saying how ugly you are and how funny your mother dresses you." :shock:[/size]
DirectGL, endlich ist es da :)
"According to the C++ standard, it's "undefined". That's a technical term that means, in theory, anything can happen: the program can crash, or keep running but generate garbage results, or send Bjarne Stroustrup an e-mail saying how ugly you are and how funny your mother dresses you." :shock:[/size]
-
kaiserludi
- Establishment
- Beiträge: 467
- Registriert: 18.04.2002, 15:31
Re: Jammer-Thread
"fatal error C1128: number of sections exceeded object file format limit : compile with /bigobj"
18.435 aus einem Template instantierte Klassen, die wiederum die Instantierung von über 100.000 Klassen aus anderen Templates getriggert haben -> "autsch".
18.435 aus einem Template instantierte Klassen, die wiederum die Instantierung von über 100.000 Klassen aus anderen Templates getriggert haben -> "autsch".
Zuletzt geändert von kaiserludi am 04.08.2012, 18:52, insgesamt 2-mal geändert.
"Mir ist auch klar, dass der Tag, an dem ZFX und Developia zusammengehen werden der selbe Tag sein wird, an dem DirectGL rauskommt."
DirectGL, endlich ist es da :)
"According to the C++ standard, it's "undefined". That's a technical term that means, in theory, anything can happen: the program can crash, or keep running but generate garbage results, or send Bjarne Stroustrup an e-mail saying how ugly you are and how funny your mother dresses you." :shock:[/size]
DirectGL, endlich ist es da :)
"According to the C++ standard, it's "undefined". That's a technical term that means, in theory, anything can happen: the program can crash, or keep running but generate garbage results, or send Bjarne Stroustrup an e-mail saying how ugly you are and how funny your mother dresses you." :shock:[/size]
- Krishty
- Establishment
- Beiträge: 8422
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Jammer-Thread
Bin durch eine Grippe außer Gefecht gesetzt und nächstes Wochenende nicht in der Nähe des Internets; der Artikel über HID muss deshalb noch eine oder zwei Wochen warten. Entschuldige, Schrompf.
- Schrompf
- Moderator
- Beiträge: 5402
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: Jammer-Thread
Du bist mir nichts schuldig. Alles ist also gut. Lass Dich nicht unterkriegen!
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
- Krishty
- Establishment
- Beiträge: 8422
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Jammer-Thread
Das scheiß Find & Replace-Fenster von Visual C++ 2010 ist saulahm. Ich klicke auf den Solution Explorer – sofort da. Ich klicke Strg+F – drei Sekunden Verzögerung, während sich das Fenster langsam aufbaut, das aus nichts besteht als aus einem Eingabefeld, einem Auswahlfeld, zwei Checkboxen und zwei Knöpfen. Mitunter ist Go to Definition schneller. WTF, Microsoft. WTF.
Re: Jammer-Thread
Suchen geht bei mir eigentlich recht schnell, aber ich bin regelmäßig schneller, Definitionen per Hand zu finden, als per Schnelltaste. Weil er einfach ewig rechnet und mir dann oft 10 Vorschläge gibt, von denen 9 total absurd sind.
Ansich warte ich einfach nur noch darauf, dass libclang in Eclipse oder QtCreator integriert wird und rund läuft, dann verabschiede ich mich von VC. Langsam reicht es.
Ansich warte ich einfach nur noch darauf, dass libclang in Eclipse oder QtCreator integriert wird und rund läuft, dann verabschiede ich mich von VC. Langsam reicht es.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
https://jonathank.de/games/
-
kaiserludi
- Establishment
- Beiträge: 467
- Registriert: 18.04.2002, 15:31
Re: Jammer-Thread
Eclipse und QTCreator? Das sin doch die beiden IDEs mit den mit Abstand schlechtesten UIs am Markt. Grausig, ich bin über jede Sekune meines Lebens froh, in denen ich diese beiden nicht anrühren muss und stattdessen VS oder Xcode nutzen kann.
"Mir ist auch klar, dass der Tag, an dem ZFX und Developia zusammengehen werden der selbe Tag sein wird, an dem DirectGL rauskommt."
DirectGL, endlich ist es da :)
"According to the C++ standard, it's "undefined". That's a technical term that means, in theory, anything can happen: the program can crash, or keep running but generate garbage results, or send Bjarne Stroustrup an e-mail saying how ugly you are and how funny your mother dresses you." :shock:[/size]
DirectGL, endlich ist es da :)
"According to the C++ standard, it's "undefined". That's a technical term that means, in theory, anything can happen: the program can crash, or keep running but generate garbage results, or send Bjarne Stroustrup an e-mail saying how ugly you are and how funny your mother dresses you." :shock:[/size]
- Chromanoid
- Moderator
- Beiträge: 4321
- Registriert: 16.10.2002, 19:39
- Echter Name: Christian Kulenkampff
- Wohnort: Lüneburg
Re: Jammer-Thread
Irre wie sich da die Geister scheiden, ich würde XCode nicht mal mit der Kneifzange anfassen :)