是否取消引用const_cast的指针ALWAYS会调用未定义的行为?

Dav*_*vid 3 c++

请参阅以下内容:

struct A
{
    std::string* get() const
    {
        //return const_cast<std::string*>(&m_pObj);
        return &const_cast<A*>(this)->m_pObj;
    }

    std::string m_pObj;
};
Run Code Online (Sandbox Code Playgroud)

被取消引用const_castthisUB?有没有时间从const_cast指针的常量取消引用结果不会调用UB?

(我知道上面的例子是不好的做法,糟糕的设计,并且可以用可变的方式解决 - 这不是重点)

Dav*_*eas 9

解除引用此UB的const_cast?是否有时间取消引用const_casting的结果指针的常量不会调用UB?

并非总是如此,只有当对象 const(A实例是const A x;)并且取消引用用于修改数据时.如果它只用于读取它将不是未定义的行为,如果对象不是const,(可能根本不是,可能是对非const对象的const引用)它也不是UB.