在C ++中从int **到int * volatile *的正确强制转换序列

时间:2017-07-25 02:11:28

标签: c++ casting volatile

我想使用C ++样式转换将T**转换为T * volatile *。 这是对的吗?

using namespace std;
int** p = nullptr;
auto cast_ptr = static_cast<
                    add_pointer_t<
                        add_volatile_t<
                            remove_pointer_t<decltype(p)>>>>(p);

2 个答案:

答案 0 :(得分:1)

它可以更简单:

auto casted_ptr = static_cast<int * volatile *>(p);

答案 1 :(得分:1)

是。是的。
这是一个简单的验证方法。这应该适用于g ++。

#include <typeinfo>

cout << typeid(p).name() << endl;

执行它:

$ ./a.out | c++filt -t

您将获得以下输出:

int* volatile*