2017-07-06 72 views
1

考慮:添加一個const,以函數模板指針參數

template<typename X> 
inline typename std::enable_if< std::is_pointer<X>::value, void>::type 
replyOk(X pointer) 
{ 
    *pointer = *pointer; //for sake of example 
} 

是否有可能常量性添加到指定的數據,以便*指針= *指針創建一個編譯器錯誤。

例如,我可以做

... 
replyOk(X const pointer) 
... 

但是這會增加常量性不它所指向變量的指針。我不確定這是否有意義...

+0

static_assert呢? (我不確定要理解你在這裏實現什麼) – willll

回答

3

我沒有看到enable_if的觀點。

template<typename X> 
inline void replyOk(const X* pointer) { 
    //... 
} 
+0

[不完全等價](http://coliru.stacked-crooked.com/a/015f2a2ec5c39a1e)但假設OP只關心對象指針,這個好多了。吻。 –

+0

事實上,這工作正常,但是這告訴我,我錯過了關於模板類型解析如何工作的一些基本概念。如果我刪除*它仍然工作正常!但是有一個區別。 X的typeid和指針更改。如果沒有*,X是指針,但是它是*,X。我沒有例外。謝謝。 – Mario

相關問題