簡體   English   中英

在C ++中從int **到int * volatile *的正確轉換順序

[英]The right cast sequence from int** to int* volatile* in C++

我想使用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);

可能更簡單:

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

是。 這是正確的。
這是一種簡單的驗證方法。 這應該適用於g ++。

#include <typeinfo>

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

並像這樣執行它:

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

您將獲得以下輸出:

int* volatile*

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM