C++ Notizen

Test, ob Toolchain C++14 unterstützt

Dies kann z.B. mit binary literals überprüft werden, die seit C++14 zum Standard gehören.

int i = 0b000100000001;	// i = 257

CXXFLAGS += -std=c++14

Methoden mit static deklarieren

Wenn man eine Methode per MyClass::MyFunct(some_arg); aufrufen können möchte, (also ohne vorher erst ein Objekt zu erzeugen), muss die Methode als static deklariert sein:

class MyClass
{
	public:
		static int MyFunct(int a, int b);
}

Logischerweise darf innerhalb der Funktion nicht auf Variablen des Objekts oder andere nicht-static Methoden zugegriffen werden.

constexpr

Deklarationen mit constexpr sind implizit auch const, static und inline. Static heisst, die Sichtbarkeit ist auf die Deklarationsdatei beschränkt (muss es sein, damit der Compiler den Ausdruck beim compilieren vollständig auswerten kann). Aus diesem Grund muss ein constexpr Ausdruck dort implementiert werden, wo er auch deklariert wird - also im .h file.