aby*_*s.7 5 c++ templates g++ volatile clang++
我有一个模板功能:
template <typename T>
inline void Acquire_Store(volatile T* ptr, T value) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
当我尝试像这样调用它时:
volatile Node* node;
Acquire_Store(&node, static_cast<Node*>(nullptr));
Run Code Online (Sandbox Code Playgroud)
这两个g ++,clang ++编译器都是这样的:
推导出参数'T'的冲突类型('volatile List :: Node*'vs.'List :: Node*')
调用此模板函数的正确方法是什么?
更新.
现在我不确定它node的类型 - 也许,我应该改成它Node* volatile node;?
我希望变量node是易变的,但不是指向的对象.
替换和演绎在词法上与宏不同。volatile T*不会成为volatile Node**但是volatile Node* volatile*。第二个 volatile 来自模板。这使得 T 等于volatile Node*第一个参数。
尝试摆脱总是在开头粘着 volatile 的情况,而是根据实际类型将其放在此处。易失性指针的易失性位于星号之后,而不是之前。
| 归档时间: |
|
| 查看次数: |
505 次 |
| 最近记录: |