Jammer-Thread

Hier kann über allgemeine Themen diskutiert werden, die sonst in kein Forum passen.
Insbesondere über Szene, Games, Kultur, Weltgeschehen, Persönliches, Recht, Hard- und Software.
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

Man kommt ja doch nicht drumrum: Debug Kernels mit Farbkodierung. Grün heißt korrekt. Nichts geht. Jetzt beginnt der Spaß. Zurück in den Jungle von Resource Bindings.
Green means correct
Green means correct
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Jammer-Thread

Beitrag von eXile »

Dürfte ich eigentlich fragen, ob du die GUI (auch irgendwo auf einem älteren Screenshot besser zu sehen; hier nur in der unteren linken Ecke zu sehen) selbst programmiert hast, oder irgendeine Library dafür benutzt hast?
Benutzeravatar
Jonathan
Establishment
Beiträge: 2478
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Jonathan »

Dürfte http://www.antisphere.com/Wiki/tools:anttweakbar sein. Hab ich auch damals für den Aufbaustrategiebeitrag vom dritten Zfx-Action benutzt.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

Ja, Jonathan hats erkannt.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Jammer-Thread

Beitrag von eXile »

Warum scheißt einem C++ in die Suppe, wenn man es gerade am wenigsten gebrauchen kann? (Ich frage mich eher, warum ich jetzt erst auf dieses Problem stoße.)

Achja, unique_ptr<void> geht natürlich auch nicht, aber das hätte ich auch nicht erwartet, sondern wäre vom Gegenteil überrascht gewesen. Ist auch besser so.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: Jammer-Thread

Beitrag von Artificial Mind »

C++/CLR um WPF Applikationen zu schreiben, die auch mal die Windows.h brauchen.

Code: Alles auswählen

mWindow->FindResource("something");
compiled nicht, da es ein

Code: Alles auswählen

#define FindResource FindResourceW
in der Windows.h gibt.
Ja, man kann es undefinen. Toll ist das trotzdem nicht.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2478
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Jonathan »

Artificial Mind hat geschrieben: Ja, man kann es undefinen. Toll ist das trotzdem nicht.
Also ich kenn nix schlimmeres, als die windows.h. Wenn auf einmal dein Vectorklassen-min-Template nicht mehr kompiliert wegen einer komischen Meldung die du nicht verstehst, ist das echt so ziemlich das nervigste, was es gibt. Kann man sich drüber aufregen, nützt aber wohl nichts. Wenn man den Fehler einmal kennt, kann man ihn ja auch recht schnell beheben.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Krishty
Establishment
Beiträge: 8295
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

CodingCat hat geschrieben:Ja, es sei denn, du begnügst dich mit Forward Declarations der Rasterizer-Implementierungen und freien Funktions-Templates. :|
Freie Funktionen waren mit dem Rasterizer außerordentlich hässlich, darum habe ich das Folgende gemacht, was ich einfach mal Krishty's static single-overridden virtual method dispatching-Muster nenne:

// Rasterizer.hpp
    class Rasterizer {
    public:
        void draw(…); // NICHT virtual
    };



// Rasterizer.cpp
    // Leer!



// Model.cpp
    void drawModel(Rasterizer & r) {
        r.draw(…);
        …
    }



// D3D9Rasterizer.hpp
    class D3D9Rasterizer : public Rasterizer {
    public:
        void draw(…); // immernoch nicht virtual
    };



// D3D9Rasterizer.cpp
    void D3D9Rasterizer::draw(…) {
        // Mein Sorgenkind
    }

    // Die Magie!
    void Rasterizer::draw(…) {
        return static_cast<D3D9Rasterizer *>(this)->draw(…); // this is gonna be so inlined
    }



Damit habe ich ca. 6 % Leistungsplus gegenüber virtuellen Methoden einkassiert* und abgesehen davon, dass die Implementierung der Basismethoden im Quelltext zur Implementierung der endgültigen Methoden gewandert ist, hat sich nichts geändert. Katzeschööööön!

————
* Meine Maschine ist seit ein paar Tagen ausgelastet, darum rauschen die Messungen sehr. Jedenfalls zwischen 5 und 9 %.
Zuletzt geändert von Krishty am 20.05.2012, 11:02, insgesamt 5-mal geändert.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8295
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Jonathan hat geschrieben:
Artificial Mind hat geschrieben: Ja, man kann es undefinen. Toll ist das trotzdem nicht.
Also ich kenn nix schlimmeres, als die windows.h. Wenn auf einmal dein Vectorklassen-min-Template nicht mehr kompiliert wegen einer komischen Meldung die du nicht verstehst, ist das echt so ziemlich das nervigste, was es gibt. Kann man sich drüber aufregen, nützt aber wohl nichts. Wenn man den Fehler einmal kennt, kann man ihn ja auch recht schnell beheben.
Darum benutze ich nur noch selber verfasste Windows-Header.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
dot
Establishment
Beiträge: 1736
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Jammer-Thread

Beitrag von dot »

Jonathan hat geschrieben:
Artificial Mind hat geschrieben: Ja, man kann es undefinen. Toll ist das trotzdem nicht.
Also ich kenn nix schlimmeres, als die windows.h. Wenn auf einmal dein Vectorklassen-min-Template nicht mehr kompiliert wegen einer komischen Meldung die du nicht verstehst, ist das echt so ziemlich das nervigste, was es gibt. Kann man sich drüber aufregen, nützt aber wohl nichts. Wenn man den Fehler einmal kennt, kann man ihn ja auch recht schnell beheben.
exakt: #define NOMINMAX ;)
Für das Problem dass viele "Funktionen" eigentlich Makros sind, gibts aber leider keine Lösung...
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

Krishty hat geschrieben:Freie Funktionen waren mit dem Rasterizer außerordentlich hässlich, darum habe ich das Folgende gemacht, was ich einfach mal Krishty's static single-overridden virtual method dispatching-Muster nenne: [...]
Ja, dieses Muster nutze ich auch für einige Rendering-bezogene Klassen.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
Jonathan
Establishment
Beiträge: 2478
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Jonathan »

Ohne jemanden zu nahe treten zu wollen, aber: Assimp Materialien sind eine Qual. Bei den ganzen Makros und Funktionsparametern die Kombination zu finden, die den Wert liefert/setzt den man haben will, so dass es kompiliert und nicht abstürzt ist echt derbe fummelig. Und die Dokumentation ist auch nur sehr begrenzt hilfreich, weil nur Makros aufgelistet werden (vor die man noch einen 'versteckten' Präfix packen muss), aber nicht, wie die jetzt genau auf die generellen get/set Funktionen passen. Und was "The MATKEY_UVWSRC property is only present if the source format doesn't specify an explicit mapping from textures to UV channels." heißen soll, versteh ich auch nicht (der Attribut, welche Textur welchen Uv-Channel benutzt ist nur vorhanden, wenn dies in der Modelldatei nicht stand? Häh?)
Ich weiß, das Zeug ist alt und C-Kompatibel, aber für mich ist halt 'Materialwert abfragen', etwas, das man mit nachschlagen innerhalb von 30 Sekunden hinkriegen können sollte.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Jammer-Thread

Beitrag von eXile »

Wie wäre es mit
Eigene Übersetzung hat geschrieben:Die MATKEY_UVWSRC-Eigenschaft ist nur vorhanden, falls das Quellformat keine explizite Abbildung von Texturen zu UV-Kanälen vorgibt.
Aber das ändert ja an deiner dargelegten, grundsätzlichen Problematik nichts. ;)
Benutzeravatar
Schrompf
Moderator
Beiträge: 4935
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf »

Ich empfinde das Design der Material-Strukturen und Methoden auch als unglücklich. Mir fallen aber als Alternativen auch nur Ansätze ein, die andere Probleme hätten, und ich habe nicht die Zeit, um alternative Ideen umzusetzen. Zumal wir in Anbetracht der inzwischen beachtlichen Nutzeranzahl auch für Abwärtskompatibilitär sorgen müssten, wenn wir da was neues erfinden.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2478
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Jonathan »

eXile hat geschrieben:Wie wäre es mit
Eigene Übersetzung hat geschrieben:Die MATKEY_UVWSRC-Eigenschaft ist nur vorhanden, falls das Quellformat keine explizite Abbildung von Texturen zu UV-Kanälen vorgibt.
Aber das ändert ja an deiner dargelegten, grundsätzlichen Problematik nichts. ;)
Versteh ich immer noch nicht. Ich will doch bloß wissen, welche Textur welchen Uv-Channel benutzt. Was genau ist da mit Abbildung gemeint? Entweder man hat UV-Maps, oder generiert die halt, aber das wird doch durch MATKEY_MAPPING gesteuert?

Zum Thema neues erfinden: Vielleicht wäre es ja möglich, neue Get/Set Methoden dazuzupacken, die ohne diese seltsamen Makros und so auskommen. Man könnte die alten immernoch benutzen, aber eben auch die schönen, neuen.
Jetzt zum Beispiel hab ich:

Code: Alles auswählen

aiMaterial->Get(AI_MATKEY_UVWSRC(0, DiffuseId), &UvChannel, 1);
(analog zum setzen) und bekomme:
error C2664: 'aiReturn aiMaterial::Get<int>(const char *,unsigned int,unsigned int,int *,unsigned int *) const': Konvertierung des Parameters 5 von 'int' in 'unsigned int *' nicht möglich
und der Fehler sagt mir erstmal rein gar nichts. Und weder ein Blick in die Doku über das Makro und die Get-Funktion sagt mir, was da jetzt falsch ist, weil die Get-Parameter so generisch sind, dass ich keine Ahnung hab, wofür sie eigentlich sind, und das Makro nur sagt, wofür es gut ist, aber nicht, was es eigentlich macht. Und das ganze logisch, Schritt für Schritt durchzudenken fällt echt schwer, wenn man so genervt ist, wie ich jetzt gerade :D

Achja: Und dann stellt man fest, dass

Code: Alles auswählen

aiMaterial->Get(AI_MATKEY_UVWSRC(0, DiffuseId), UvChannel);
funktioniert. Warum ich jetzt diese Version nehmen muss, weiß ich allerdings nicht (wie gesagt, ich wollte es analog zum setzen machen).
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

Schleifenrümpfe im Pixel Shader werden offenbar grundsätzlich immer vollständig ausgeführt (inkl. Speicherzugriffe?!?), bedingte Nebenwirkungen dabei nur per Flag ausgeschaltet. Da hilft nicht mal ein Early Return im Schleifenrumpf, welches den Pixel Shader komplett abbricht. Im Moment kostet mich das hunderte Millisekunden, und ich optimiere mich seit Stunden erfolglos an einzelnen Speicherzugriffen zu Grunde. Was genau da vor sich geht, kann ich bis jetzt nur erahnen, übertrifft aber soweit meine schlimmsten Befürchtungen. :shock:

Oh, und wehe man geht der Sache auf den Grund:
fxc hat geschrieben:internal error: argument pulled into unrelated predicate
Na herzlichen Glückwunsch. Ist der Shader also mal wieder außerhalb der typischen Komplexität fünf Jahre alter Spiele? :evil:
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
Krishty
Establishment
Beiträge: 8295
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Anstatt zu schlafen weil ich in drei Stunden wieder raus muss habe ich eben fünf Stunden lang versucht, LLVM mit Eclipse ans Laufen zu kriegen

Das habe ich alles gesaugt, ausprobiert, installiert, extrahiert: und Eclipse so: Nö

und ich so: Och komm

und Eclipse so: Because FUCK YOU

Nachtrag: Und dann habe ich das Häkchen bei „nicht unterstützte Toolchains ausblenden“ weggemacht und obwohl die Toolchain laut Eclipse nicht unterstützt ist sehe ich jetzt ein Stück Clang in der Ausgabe. True Story!
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8295
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

clang++: error:
no
such
file
or
directory:
'(x86)\llvm-gcc4.2-2.9-x86-mingw32\include'


Oh fein

Ich darf ALLES NOCHMAL NEU INSTALLIEREN

weil ihr bescheuerten Idioten im Jahr 2012 keine Leerzeichen in Pfaden unterstützt

I CANT EVEN

und warum bricht die Fehlermeldung nach jedem Wort die Zeile um

Bild

IN WAS FÜR EINER WELT LEBEN WIR EIGENTLICH
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8295
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

bei der Installation des Plugins via Drag & Drop hängt mein Browser. Der ganze Chrome trotz tollem Sandbox-Konzept.



Eclipse ist nur mit dem Standard-Windows-Farbschema kompatibel

hier surren überall Mücken rum weil das so scheiße grell ist



ich wusste ja, dass es schwierig würde, Clang zum Laufen zu kriegen

Ich hatte gehofft, es würde wie mit Sex – täte nur beim ersten Mal weh

aber mittlerweile installiere ich es zum vierten Mal und blute immernoch

und noch ist keine einzige Zeile kompiliert



Ahja

clang++.exe in PATH eintragen muss ich auch noch

na, hoffentlich stolpert der nicht über die ganzen Leerzeichen, die da drinstehen
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8295
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Haha wie konnte ich so dumm sein, mein Projekt Clang Test zu nennen

Illegal character in path at index 5: clang test.exe

[0] 'c'
[1] 'l'
[2] 'a'
[3] 'n'
[4] 'g'
[5] ' ' <<<<<<
[6] 't'
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: Jammer-Thread

Beitrag von Artificial Mind »

Schämst du dich denn gar nicht? Du weißt doch das wir in den 90igern leben. Da kannst du dir doch nicht einbilden, Leerzeichen in einem Pfad - einem PFAD - zu benutzen!

srsly, ich dachte wir wären mit soetwas durch.


Zum Jammern:
Ich kriege gestern eine Mail von einem Projektmitglied, dass sein Code inzwischen ohne Compiler Fehler compiliert. Ich freu mich drauf, git pull, qtcreator build und die ganze dämliche Konsole voller Compiler fehler. Dinge wie for (int u = 0; i < size; i++). (i war nicht woanders definiert)
Ich schreib also ne böse Mail an alle, meldet sich besagtes Teammitglied und entrüstet sich, er fühle sich etwas auf den Schlips getreten, er hätte ja alles gecheckt und in seinen Dateien kämen keine compile errors.
Ich zeig ihm also git log und schon ist er ruhig.

Moral von der Geschichte: in MSVC kann man ein Gedicht in ein unbenutzes Template schreiben und der Compiler freut sich. Mein GCC (ich arbeite für das Projekt unter Linux, meine Teammitglieder unter Windows) versucht das wohl zu instanzieren und rät dann ein paar - allerdings auch nicht alle - Fehler.
Alexander Kornrumpf
Moderator
Beiträge: 2131
Registriert: 25.02.2009, 13:37

Re: Jammer-Thread

Beitrag von Alexander Kornrumpf »

Artificial Mind hat geschrieben:
Moral von der Geschichte: in MSVC kann man ein Gedicht in ein unbenutzes Template schreiben und der Compiler freut sich. Mein GCC (ich arbeite für das Projekt unter Linux, meine Teammitglieder unter Windows) versucht das wohl zu instanzieren und rät dann ein paar - allerdings auch nicht alle - Fehler.
Ja, das las ich hier im Forum schon mehr als einmal :)
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: Jammer-Thread

Beitrag von Artificial Mind »

Ok, kann mir das mal bitte jemand erklären?
Aus der gmm-Library.

Code: Alles auswählen

template <typename MAT1, typename VECT, typename MAT2>
void symmetric_qr_algorithm(const MAT1 &A, const VECT &eigval_,
                               const MAT2 &eigvect_,
                               tol_type_for_qr tol = default_tol_for_qr,
                               bool compvect = true) {
     VECT &eigval = const_cast<VECT &>(eigval_);
     MAT2 &eigvect = const_cast<MAT2 &>(eigvect_);

     ...
}
eigval und eigvect sind output parameter. Man bekommt die Eigenwerte und Eigenvektoren in diese Parameter geschrieben.
Warum sind die als const übergeben und werden direkt geconst_castet? Man hat mir beigebracht, dass dies wirklich das letzte ist, was man tun möchte.
Benutzeravatar
dot
Establishment
Beiträge: 1736
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Jammer-Thread

Beitrag von dot »

Das ist natürlich völliger Schwachsinn und potentiell undefined behaviour (nämlich dann wenn da mal jemand wirklich einen const VECT übergibt)...
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4270
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Jammer-Thread

Beitrag von Chromanoid »

@Krishty: Ich kann als Speicherort für alles was mit SDKs usw. zu tun hat nur C:/Users/Public/SDKs o.Ä. empfehlen.
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Jammer-Thread

Beitrag von eXile »

Krishty hat geschrieben:hier surren überall Mücken rum weil das so scheiße grell ist
Da weiß ich doch, warum ich hier alle Fenster mit Fliegengittern ausgestattet habe. We have the technology! Oder so.
Benutzeravatar
Krishty
Establishment
Beiträge: 8295
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Artificial Mind hat geschrieben:Moral von der Geschichte: in MSVC kann man ein Gedicht in ein unbenutzes Template schreiben und der Compiler freut sich. Mein GCC (ich arbeite für das Projekt unter Linux, meine Teammitglieder unter Windows) versucht das wohl zu instanzieren und rät dann ein paar - allerdings auch nicht alle - Fehler.
Benutz Clang.

Ach; besser doch nicht.

Artificial Mind hat geschrieben:Ok, kann mir das mal bitte jemand erklären?
Da hat jemand gemerkt, dass er nicht mehr in die Parameter schreiben kann, falls für eigval_ und eigvect_ const-Instanzen (z.B. Rvalues) übergeben werden, weil in diesem Fall MAT1 und VECT zu const-qualifizierten Typen aufgelöst werden. Weil er kein unConst-Template auf die Reihe gekriegt, und auch sonst nicht viel von irgendwas verstanden hat, hat er die Parameter const deklariert und das const_cast<>() eingebaut. Auf diese Art und Weise sind lokale Instanzen vom Typ VECT nicht mehr const (das const wird durch das in der Parameterdeklaration von VECT und MAT2 weggezogen), und er kann trotzdem irgendwie in die Instanzen schreiben. Ist aber nur geraten.

Chromanoid hat geschrieben:@Krishty: Ich kann als Speicherort für alles was mit SDKs usw. zu tun hat nur C:/Users/Public/SDKs o.Ä. empfehlen.
Das ist ja nicht einmal ein SDK. Das sind drei Compiler und eine IDE. Irgendwo hört es doch auf.

eXile hat geschrieben:Da weiß ich doch, warum ich hier alle Fenster mit Fliegengittern ausgestattet habe. We have the technology! Oder so.
Ist ein Kippfenster. Dafür habe ich den schöneren Ausblick auf die Sterne. (Falls ich nicht vom Standard-Thema geblendet bin …)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: Jammer-Thread

Beitrag von Artificial Mind »

Krishty hat geschrieben:
Artificial Mind hat geschrieben:Ok, kann mir das mal bitte jemand erklären?
Da hat jemand gemerkt, dass er nicht mehr in die Parameter schreiben kann, falls für eigval_ und eigvect_ const-Instanzen (z.B. Rvalues) übergeben werden, weil in diesem Fall MAT1 und VECT zu const-qualifizierten Typen aufgelöst werden. Weil er kein unConst-Template auf die Reihe gekriegt, und auch sonst nicht viel von irgendwas verstanden hat, hat er die Parameter const deklariert und das const_cast<>() eingebaut. Auf diese Art und Weise sind lokale Instanzen vom Typ VECT nicht mehr const (das const wird durch das in der Parameterdeklaration von VECT und MAT2 weggezogen), und er kann trotzdem irgendwie in die Instanzen schreiben. Ist aber nur geraten.
Das kommt aus der gmm-Library:
http://download.gna.org/getfem/html/hom ... nseqr.html
Eigentlich ist das eine seriöse und auch von nicht wenigen verwendete Math Library für Linear Algebra Stuff.
Mir kommt eine "da konnte jemand nicht richtig programmieren"-Erklärung irgendwie seltsam vor.
Benutzeravatar
dot
Establishment
Beiträge: 1736
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Jammer-Thread

Beitrag von dot »

Artificial Mind hat geschrieben:Mir kommt eine "da konnte jemand nicht richtig programmieren"-Erklärung irgendwie seltsam vor.
Es gibt aber keine vernünftige Erklärung für das. Wie gesagt, je nachdem wie die Funktion aufgerufen wird, ist das sogar undefined behaviour...
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: Jammer-Thread

Beitrag von Artificial Mind »

Bild
Antworten