gpt4 book ai didi

c++ - 如何使用 std::is_volatile?

转载 作者:IT老高 更新时间:2023-10-28 21:55:07 26 4
gpt4 key购买 nike

我试图禁止对 volatile 类型的特定操作。为此,我尝试使用 std::is_volatile,但下面的代码编译时没有错误,这不是我想要的。

为什么is_volatile::value false在下面的情况下?

#include <type_traits>

template<typename T>
inline void DoStuff(T val) {
static_assert(!std::is_volatile<T>::value, "No volatile types plz");
//...
}

int main() {
volatile char sometext[261];
DoStuff(sometext);
}

最佳答案

问题是 T 不是 volatile类型。它是 volatile char* .等一下,你说,我看到了volatile在那里。没错,但请考虑一下:char* volatile是易失的类型。 volatile char*不是。它是一个指向 volatile char 的非 volatile 指针数组。

解决方案:std::is_volatile<typename std::remove_pointer<T>::type>

关于c++ - 如何使用 std::is_volatile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46582265/

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