template<typename T>
struct S {
using type = T;
};
volatile S<int> s;
template<typename T>
void f(T& v) {
using n = typename T::type;
S<n>::_; // to show
}
int main() {
f(s);
}
在f
T
推导为 volatile S<int>
,但是n
是
只有int
.我该怎么做才能保留 volatile
, 那是,
有 n
是volatile int
?
最佳答案
using n = typename std::conditional< std::is_volatile<T>::value,
volatile typename T::type,
typename T::type >::type;
如果 T
是 volatile
,则将 volatile
添加到 n
。
关于c++ - 在嵌套类型中保留 volatile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54922795/