【问题标题】:What does <T::* int> mean? [duplicate]<T::* int> 是什么意思? [复制]
【发布时间】:2016-03-09 14:16:10
【问题描述】:

在代码中:

typedef
template< typename T>
boost::variant<T::* int, T::* string, T::* double, T::* bool>
   any_member;

T::* 是什么意思/做什么?

【问题讨论】:

  • 咦,是什么让你们认为这是有效的 C++ 代码?
  • @cpplearner:你说得对,一定是 OP 中的转录错误。应该是int T::*
  • Here's an example that might use it。请注意,我绝不赞成实际这样做;该模式是一种通用的尝试,并且有更好的方法来做我所链接的。
  • @cpplearner 我在这个博客上找到了这个例子:blog.asymptotic.co.uk/2011/02/… 我还没有完整地阅读过这篇文章,但是我马上就看到了顶部的代码。

标签: c++ template-meta-programming


【解决方案1】:

T::* 是一个指向T 成员的指针。 int 是该成员的类型。

【讨论】:

  • 也许我太挑剔了,但你在Tint 中都使用了“类型”这个词。为避免混淆,我将其改写为“T::* int 是指向 class T 成员的指针;此成员的类型为 int”。不过,反对票不是我的(如果这是我真的认为它过分的原因)。
  • 反对票是我的。该问题被标记为重复,并且在创建此答案之前已经存在关闭标志。最重要的是,OP 上已经有 cmets 既回答了问题又链接到了 dup。在我看来,这个答案没有理由存在。然而,这并不是对其内容的批评。
  • @AndyG 好吧,在我发布答案时,已放置了关闭标志。在我看来,由于语法不同,它并不完全是链接到问题的欺骗。这是您的投票,因此您可以随心所欲,但我将答案留在这里。
猜你喜欢
  • 1970-01-01
  • 2021-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
相关资源
最近更新 更多