【问题标题】:Adding const to function template pointer argument将 const 添加到函数模板指针参数
【发布时间】:2017-07-06 17:04:59
【问题描述】:

考虑:

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

是否可以为指向的数据添加常量,以便 *pointer = *pointer 产生编译器错误。

比如我可以做

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

但这增加了变量指针的常量性,而不是它指向的东西。我不确定这是否有意义......

【问题讨论】:

  • static_assert 呢? (我不确定你想在这里实现什么)

标签: c++ function templates constants


【解决方案1】:

我不明白enable_if 的意义。

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

【讨论】:

  • Not quite equivalent 但是,假设 OP 只真正关心对象指针,这要好得多。亲吻。
  • 确实可以正常工作,但这告诉我我缺少一些关于模板类型解析如何工作的基本概念。如果我删除 * 它仍然可以正常工作!但是有区别。 X 和指针的 typeid 发生变化。没有 *, X 是指针,但有 * , X 它是。我也不例外。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2020-04-12
  • 1970-01-01
  • 2021-12-10
  • 1970-01-01
相关资源
最近更新 更多