8

我考虑了 C++ 的一点语言扩展,并为提案编写了草稿(http://pdfcast.org/pdf/user-defined-type-qualifiers-1)。

这个想法是,用户可以自己定义诸如 const 和 volatile 之类的限定符,以确保某些限定代码(即方法)仅调用相同限定符。

问题是这是否会与任何语言规则发生冲突,或者我是否遗漏了什么。

4

1 回答 1

1

对于 StackOverflow 来说并不是真正的主题。但是,是的,“用户定义的类型限定符”是一个绝妙的想法,而且历史悠久。它们通常用于污点分析(即,确保用户控制的和潜在的恶意位不会像受信任的位一样被使用;确保您的所有 HTML 在显示之前正确转义;诸如此类)。

http://www.cs.umd.edu/~jfoster/papers/toplas-quals.pdf将污点分析作为其主要动机,但也提到了安全信息流(即确保加密密钥位等敏感信息不t 泄漏到代码的非安全部分)。

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

Tainted<std::string> x;
cin >> x;  // unfortunately, this implicit conversion of Tainted<T>& to T&
           // is exactly what we want to avoid
于 2013-10-01T23:06:24.447 回答