constructor confusion
-
int main() { int A(); A(); return 0; } int A() { std::cout << "test"; return 0; }
oh ich wusste gar nicht, dass das legal ist.
Auch gutHat das bei nicht-lambdas irgend ein nutzen?
EDIT: ich finde das ist eine ziemliches Fettnäpfchen.
-
Tim06TR schrieb:
Hat das bei nicht-lambdas irgend ein nutzen?
Wüßte nicht. ALso das lokale Deklarieren geht schon immer, dachte ich. Sicher lange vor C++11.
-
oh ich wusste gar nicht, dass das legal ist.
Natürlich nicht. Es ist (zumindest meiner Meinung nach) völlig nutzlos, solange man Funktionen auch nicht in Funktionen definieren darf.
Sicher lange vor C++11.
Klar, schon in 98.
-
Tim06TR schrieb:
EDIT: ich finde das ist eine ziemliches Fettnäpfchen.
Als Gegenmittel wurde in C++11 die "Uniform initialization syntax and semantics" (siehe http://www.stroustrup.com/C++11FAQ.html#uniform-init) engefuhrt.
-
manni66 schrieb:
Als Gegenmittel wurde in C++11 [ein weiteres Fettnäpfchen] engefuhrt.
ftfy
-
Arcoth schrieb:
Sicher lange vor C++11.
Klar, schon in 98.
Schon in C.
-
gcc mag deine Namensgebung '_1' nicht.
-
Jockelx schrieb:
gcc mag deine Namensgebung '_1' nicht.
gcc hat mit _1 überhaupt kein Problem.
-
Jockelx schrieb:
gcc mag deine Namensgebung '_1' nicht.
Sollte er nicht, denn der Name ist nicht im globalen Namensraum und der Unterstrich wird nicht von einem Großbuchstaben gefolgt.
Das einzige "Problemchen" könnte sein, dass ein anderer Bezeichner durch den Funktionsparameter verdeckt wird:
(std::placeholders)::_1
. Ist aber unwichtig, weil der hier sowieso nicht benutzt wird.
-
Arcoth schrieb:
Jockelx schrieb:
gcc mag deine Namensgebung '_1' nicht.
Sollte er nicht
Stimmt.
Der Code von Tim ist aber richtig (zumindest ohne das delete) und ich hab verstanden, bei ihm würde es nicht kompilieren.
Deshalb hab ich geraten, dass das _1 stört.
Funktioniert aber auch mit _1, auch auf ideone.