gpt4 book ai didi

c++ - 检查变量是否为常量限定

转载 作者:太空狗 更新时间:2023-10-29 23:50:15 24 4
gpt4 key购买 nike

我正在阅读有关 const_cast 的内容,它似乎不安全且不是很有帮助。 best answer关于它在 SO 状态下它在这样的场景中很有用:

void func(const char* param, bool modify){
if(modify)
//const_cast and change param
// stuff that do not change param
}

虽然这是一种可能的用途,但它有其风险,因为您必须正确提供“修改”的值,否则您将获得未定义的行为,因为您正在更改本应保持不变的内容。我想知道您是否可以在无需提供此额外参数的情况下实现相同的功能,为此您很可能需要检查是否存在 const 限定符。

我发现关闭的东西是标准函数 is_const ,但它似乎仅限于一种不同的用法:

is_const<const int>::value //returns true
is_const<int>::value // returns false
const int myVar=1;
is_const<myVar>::value // what it would look like ( does not compile)

我也尝试过使用类似的函数签名,它们仅在“const”限定符上有所不同,但这被视为重新定义。那么有可能做到吗?如果可以,如何实现?

最佳答案

您可以使用 std::is_const<decltype(myVar)>::value检查是否myVar已声明为 const .

但是,如果 myVar是对另一个对象的指针或引用,则无法知道该对象是否为 const或者不是来自函数内部。

关于c++ - 检查变量是否为常量限定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32853008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com