C++ : eliminarea lui const

Lucrăm cu Microsoft Visual Studio Enterprise 2015 în Windows 10 Professional (thanks, MSDNAA).

Descărcaţi codulPentru vizualizare, folosiţi scrollbar-ul din josul blocului de cod.
#include <iostream>
#include <conio.h>

int main()
{
	int a = 2;

	int &refa = a;//referinta (pseudonim ) pentru a
	refa++;//modificarea valorii lui a

	const int &crefa = a;//referinta (constanta) la a
	const_cast<int&>(crefa)++;//conversie in referinta la a, urmata de modificarea valorii lui a

	int *pa = nullptr;
	pa = &a;//pointer la a
	(*pa)++;//modificarea valorii lui a

	const int *cpa = nullptr;
	cpa = &a;//pointer (cu referire constanta) la a
	const_cast<int&>(*cpa)++;//conversie a referirii constante in referire la a, urmata de modificarea valorii lui a 

	int *const pca = &a;//constanta pointer la a
	(*pca)++;//modificarea valorii lui a

	std::cout << a << " " << crefa
                  << " " << *pa << " " << *cpa
                  << " " << *pca
                  << std::endl;
	
	_getch();
	return 0;
}