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);
}
Run Code Online (Sandbox Code Playgroud)
在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;
Run Code Online (Sandbox Code Playgroud)
添加volatile到nif T是volatile.
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |