用户定义的限定符
User defined qualifiers
我想过C++的语言扩展,并为提案(http://pdfcast.org/pdf/user-defined-type-qualifiers-1)编写了草稿。
这个想法是,用户可以自己定义像 const 和 volatile 这样的限定符,以确保一些限定代码(即方法)只调用相同的限定符。
问题是这是否会与任何语言规则相冲突,或者我是否错过了任何东西。
不是StackOverflow的主题。但是,是的,"用户定义的类型限定符"是一个很好的想法,并且具有悠久的历史。它们通常用于污点分析(即,确保用户控制和潜在的恶意位不会像受信任的位一样使用;确保在显示之前正确转义所有 HTML;诸如此类)。
http://www.cs.umd.edu/~jfoster/papers/toplas-quals.pdf 将污点分析作为其主要动机,但也提到了安全信息流(即,确保敏感信息(如加密密钥位)不会泄漏到代码的非安全部分)。
也就是说,对于大多数应用程序,"用户定义的数据类型"就足够了。您几乎总是可以机械转换,例如 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
相关文章:
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 使用用户定义函数的字符串反转
- 用户定义函数中的指针和输入
- Visual C++(VS2017)中用户定义的转换不明确
- 使用用户定义的参数调用future/async并调用类方法
- 带有用户定义类的c++折叠表达式
- g++用户定义的动态链接库上的全局new和delete运算符
- 直接在 unordered_map 的方法中使用哈希,而不是生成哈希的用户定义对象
- 修改"std::set"中用户定义类型的值
- 参数包构造函数在类模板中隐藏用户定义的转换
- MAKE:找不到包含的用户定义的头文件?
- C++:用户定义的显式类型转换函数错误
- 是否有解决方法可以在 c++ 中为 short 定义用户定义的文字?
- 从 QAbstractItemModel 返回自定义用户类型
- 无法引用自定义用户控件
- Lua:为自定义用户数据提供一个字符串方法
- 是否可以在visualstudio调试窗口中定义用户定义的变量
- 如何在编写自定义用户操作时引用内置操作
- C++自定义用户输入调用变量
- 不能定义用户定义的字面值