Jon*_*rdy 14 c++ functional-programming const immutability language-extension
什么是向编译器指示的最简单和最不突兀的方式,无论是通过编译器选项,#define
s,typedef
s还是模板,每次我说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"的新语言作为大学项目.
我个人认为这是一个有趣的想法 - 你可以从不可变类型中获得各种性能和可读性 - 只需看看大多数函数式语言.
归档时间: |
|
查看次数: |
1221 次 |
最近记录: |