Was fehlt in C++11?
-
Für sowas gibt es doch das named loop idiom.

An so einfache Dinge wie pi habe ich jetzt gar nicht gedacht. Vielleicht überhaupt eine Ansammlung an mathematischen, physikalischen und anderen Konstanten oder sowas.
Wie siehts aus mit Dingen wie Shared Memory, GPU Berechnungen, RMI, ...
-
314159265358979 schrieb:
[...] GPU Berechnungen [...]
http://channel9.msdn.com/posts/Daniel-Moth-Blazing-fast-code-using-GPUs-and-more-with-C-AMP

Aber ich find nicht dass sowas in den C++ Standard gehört...
-
ipsec schrieb:
Ich sehe nicht, dass die RTTI-Möglichkeiten in C++ nicht "gescheit" sind.
Ach komm, dann musst du blind sein. Unter RTTI verstehe ich, dass man z.B. von einer Klasse die Member, den Namespace, die BaseClass usw. zur Laufzeit ermitteln lassen und darauf zugreifen kann. typeid ist dagegen ein Witz, soll man ja sowieso nicht verwenden.
wxSkip schrieb:
@StellerFragen: Vielleicht willst du so etwas? (ist halt nur ein Nachbau, ungetestet)
So ähnlich habe ich das, funktioniert auch aber ist halt sehr Fehleranfällig da man die dort gespeicherten Angaben nach einer Änderung der Klasse schnell mal vergisst zu aktualisiert.
-
StellerFragen schrieb:
Unter RTTI verstehe ich, dass man z.B. von einer Klasse die Member, den Namespace, die BaseClass usw. zur Laufzeit ermitteln lassen und darauf zugreifen kann.
Damit stehst du aber allein. RTTI ist in C++ bereits ein festgelegter Begriff, der primär
typeidunddynamic_castsowie das Exception-Dispatching beinhaltet.Verwende doch "Reflection" oder was Ähnliches, wenn du von umfassender Metaprogrammierung zur Laufzeit sprichst.
-
StellerFragen schrieb:
So ähnlich habe ich das, funktioniert auch aber ist halt sehr Fehleranfällig da man die dort gespeicherten Angaben nach einer Änderung der Klasse schnell mal vergisst zu aktualisiert.
Das versteh ich nicht, du kannst genausogut vergessen deinen statischen Konstruktor zu aktualisieren, macht doch absolut 0 Unterschied!?
-
StellerFragen schrieb:
wxSkip schrieb:
@StellerFragen: Vielleicht willst du so etwas? (ist halt nur ein Nachbau, ungetestet)
So ähnlich habe ich das, funktioniert auch aber ist halt sehr Fehleranfällig da man die dort gespeicherten Angaben nach einer Änderung der Klasse schnell mal vergisst zu aktualisiert.
Und in C# vergisst du das nicht? Meistens muss man statische Variablen ja sowieso nicht mehr als mit dem Konstruktor initialisieren und RAII sollten sie sowieso haben.
P.S.: Ich hätte noch eine Möglichkeit.
Du baust dir eine Template-Klasse RAIIManager<T>, mit der du folgendes machst:
//Header class MyClass { static Resource res; static RAIIManager<Resource> res_manager; }; //Source static Resource Myclass::res; static RAIIManager<Resource> Myclass::res_manager(Myclass::res, [](Resource &r){r.request();}, [](Resource &r){r.release();});EDIT: Vielleicht gibt es ja in C# eine Fehlermeldung, wenn man nicht alle statischen Member initialisiert.
-
wxSkip schrieb:
Und in C# vergisst du das nicht?
Nein, dort werden die Informationen wie Membername, Namespacename usw. ja automatisch hinzugefügt.
Bei C++ muss ich all die Informationen per Hand zur Verfügung stellen.
-
Sry aber: Hä!?
-
Von der IDE wahrscheinlich.
-
Ja vermutlich aber das hat mit C++ doch nix zu tun. Abgesehen davon dass jede mir bekannte C++ IDE das genauso macht...
-
dot schrieb:
Ja vermutlich aber das hat mit C++ doch nix zu tun. Abgesehen davon dass jede mir bekannte C++ IDE das genauso macht...
Aber nicht bei selbst gebastelten Hilfs-RAII-Klassen, oder?
-
Warum nicht?
-
dot schrieb:
Warum nicht?
Vielleicht, weil die IDE nicht weiß, dass du alle statischen Member einer anderen Klasse aufgelistet haben willst?
-
Eieiei ;). Folgender Code als Beispiel:
MemberInfo[] MyMemberInfoArray = GetType().GetProperties(); for (int counter = 0; counter < MyMemberInfoArray.GetLength(0); counter++ ) { String message = counter.ToString() + " / " + MyMemberInfoArray[counter].Name + " / " + MyMemberInfoArray[counter].MemberType.ToString(); MessageBox.Show(message, ""); }So kann ich mir in C# die Namen aller Properties einer Klasse zur Laufzeit ausgeben lassen. Mit "GetMembers" anstatt "GetProperties" die aller Funktionen usw. In C++ gehen all diese Informationen beim Compilieren verloren. Darum muss ich in C++ diese per Hand hinzufügen:
namespace MyNamespace { class MyClass { public: static std::wstring klassenName; static std::wstring namespaceName; } std::wstring MyClass::klassenName = L"MyClass"; std::wstring MyClass::namespaceName = L"MyNamespace"; }Wenn ich die Klasse nun in einen weiteren Namespace packe oder den Namen der Klasse verändere dann stimmen die Namen in den statisch hinterlegten Strings nicht mehr. Das meinte ich mit Fehleranfällig. In C# sind all diese Informationen aber schon automatisch vorhanden. Jetzt verständlich?
-
Und wofür brauch ich die Informationen?
-
Das ist etwas völlig anderes, als ich vorhin verstanden habe. (und du vorhin IMHO auch behauptet hast) Aber jetzt ist es klar.
-
Ja das ist Reflection. Und das braucht man in C++ nicht

-
Ich gebe es auf. Kein Wunder dass C++ am aussterben ist.
-
Ist es das? Ich glaub eher das Problem hier ist dass du C++ nicht verstanden hast

Ich hab bisher jedenfalls noch kein Problem gesehen zu dessen Lösung Reflection essentiell wäre. Und ich war bisher in Sprachen wo ich Reflection gehabt hätte (C#) im Nachhinein immer froh mich für die bessere Lösung ohne Reflection entschieden zu haben da das Programm am Ende dann flexibler war. Aber natürlich ist Reflection angenehm um schnell was hinzumachen, keine Frage...
-
Sorry wegen der Verwirrung, aber ich dachte RTTI und Reflection sind mehr oder weniger das selbe. Ich meine Runtime Type Information sagt doch genau das aus was Reflection macht.
Klar, wenn man Microcontroller programmiert braucht man sowas nicht. Aber es soll auch noch andere Gebiete wie z.B. GUI-Programmierung geben wo mir Reflection extrem viel hilft.