在C++中使所有类型默认为常量

Jon*_*rdy 14 c++ functional-programming const immutability language-extension

什么是向编译器指示的最简单和最不突兀的方式,无论是通过编译器选项,#defines,typedefs还是模板,每次我说T,我的意思是T const什么?我宁愿不使用外部预处理器.由于我不使用mutable关键字,因此可以接受重新调整以指示可变状态.

编辑:由于这个意图完全是错误的(因为我不在几个小时内澄清),让我解释一下.本质上,我只想知道在编译时可以使用哪些系统来操作类型系统.我不在乎这是否会产生非标准,错误,不可维护,无用的代码.我不打算在生产中使用它.这只是一种好奇心.

到目前为止的潜在(次优)解决方案:

// I presume redefinition of keywords is implementation-defined or illegal.
#define int int const
#define ptr * const
int i(0);
int ptr j(&i);

typedef int const Int;
typedef int const* const Intp;
Int i(0);
Intp j(&i);

template<class T>
struct C { typedef T const type; typedef T const* const ptr; };
C<int>::type i(0);
C<int>::ptr j(&i);
Run Code Online (Sandbox Code Playgroud)

stu*_*ith 12

使用开源C++编译器并对其进行修改.

我认为downvotes的主要原因是人们认为你正试图修改C++.告诉他们你正在创建一种名为"C-const"的新语言作为大学项目.

我个人认为这是一个有趣的想法 - 你可以从不可变类型中获得各种性能和可读性 - 只需看看大多数函数式语言.