可视化的一个MS扩展到c++的有用性
visual Usefulness of an MS extensions to C++
微软对c++扩展的最后一项,"将非Const指针参数传递给期望引用Const指针参数的函数",是一个扩展,因此它可以被认为是一个有益的特性。然而,我看不出它的价值。他们所展示的例子表明这是危险的。
typedef int T;
const T acT = 9; // A constant of type 'T'
const T * pcT = & acT; // A pointer to a constant of type 'T'
void func2 ( const T * & rpcT ) // A reference to a pointer to a constant of type 'T'
{
rpcT = pcT;
}
T * pT; // A pointer to a 'T'
void func ()
{
func2 ( pT ); // Should be an error, but isn't detected
* pT = 7; // Invalidly overwrites the constant 'acT'
}
为什么它是一个扩展而不是一个bug?
因为"这不是一个bug,这是一个特性。"
是的,这显然是一件坏事。你得去问微软负责的工程师,但我怀疑这是一个bug,它被维护只是因为某些人的软件依赖于它,而微软想要保持向后兼容性。
然而,似乎这个文档已经过时了:我无法让Visual Studio 2015或2013接受使用此扩展名的代码。
相关文章:
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 如何在C++中定义扩展到条件语句的宏?
- 使用 Pybind11 将C++扩展到 Python
- "__cplusplus"宏扩展到什么?
- 将矢量的数据扩展到指定大小(插值)
- 如何将模板参数包扩展到一系列模板化参数
- AVX2 根据条件将连续元素扩展到稀疏向量?(如AVX512 VP扩展)
- 符号将11位扩展到32位
- 以编程方式将终端扩展到特定大小
- 将RCPP函数扩展到任何类型的输入向量
- C 将参数包扩展到数组元组
- 将参数包扩展到具有折叠表达式的lambda -GCC与Clang
- 我如何获得Qlabel以扩展到全宽度
- c++hdf5:如何设计易于扩展到新的复合数据类型的程序
- 将 std::list 扩展到 cylic list
- 如何将宏值扩展到宽字符串
- 如何将右值生存期扩展到自定义容器生存期
- 关闭Qt控制台应用程序会终止exec()调用中的进程,并且无法从main()扩展到范围
- 在c++中,当我们创建一个类而不扩展到任何类时
- 可视化的一个MS扩展到c++的有用性