用户定义限定符 我考虑了C++的一个小的语言扩展,并为一个提案()./P>编写了草稿。

用户定义限定符 我考虑了C++的一个小的语言扩展,并为一个提案()./P>编写了草稿。,c++,c++11,c++14,C++,C++11,C++14,其思想是,用户可以自己定义const和volatile等限定符,以确保某些限定代码(即方法)只调用相同的限定代码 问题是,这是否会与任何语言规则相冲突,或者我是否遗漏了任何内容。这并不是StackOverflow的主题。但是,是的,“用户定义类型限定符”是一个很好的主意,而且有着悠久的历史。它们通常用于污染分析(即,确保用户控制的和潜在的恶意位不会被当作受信任的位来使用;确保在显示之前正确转义所有HTML;诸如此类的事情) 污染分析是其主要动机,但也提到了安全信息流(即,确保加密密钥位等敏感信息

其思想是,用户可以自己定义const和volatile等限定符,以确保某些限定代码(即方法)只调用相同的限定代码


问题是,这是否会与任何语言规则相冲突,或者我是否遗漏了任何内容。

这并不是StackOverflow的主题。但是,是的,“用户定义类型限定符”是一个很好的主意,而且有着悠久的历史。它们通常用于污染分析(即,确保用户控制的和潜在的恶意位不会被当作受信任的位来使用;确保在显示之前正确转义所有HTML;诸如此类的事情)

污染分析是其主要动机,但也提到了安全信息流(即,确保加密密钥位等敏感信息不会泄漏到代码的非安全部分)

也就是说,对于大多数应用程序,“用户定义的数据类型”就足够了。您几乎总是可以机械地将例如
std::string[[tainted]]x
转换为
tainted x

Tainted<std::string> x;
cin >> x;  // unfortunately, this implicit conversion of Tainted<T>& to T&
           // is exactly what we want to avoid
污染x;
cin>>x;//不幸的是,这种对污染&T的隐式转换&
//这正是我们想要避免的

对于这类问题,我不确定您是否会受到如此多的关注。因此,问题往往非常具体,通常包括源代码(请参阅)。在“未来提案”论坛的网站上有这样一个描述:“你想提出一种新的语言或库功能,并在撰写详细提案之前尽早获得反馈吗?”。旁注:如果你当前的符号是
fixed\u point
而不是
u\u fixed\u point
,你可以使用标签或“策略”简化一下:
固定点
(事实上,我想我以前在什么地方见过这个)。我同意@DyP的观点,这可能是一个错误的地方。投票支持这个话题,不要在这里提问…@Dyp thx,我在那里开始了讨论。你可能会觉得有趣