【发布时间】:2011-04-05 18:14:06
【问题描述】:
是否可以检查:
template<class IntType,IntType value>
struct X{};
我的意思是,是否可以检查用户提供的值是否“适合”IntType(可以是任何标准整数类型)类型?例如,我想检测这样的东西:
X<char,300> a;//here 300 is out of range and I would like to be able to detect that.
【问题讨论】:
-
@GMan:他的目标是在编译时检查给定的模板参数是否在给定数值类型的允许范围内。
-
@There @Tomalak:对,为什么? What's the bigger picture?
-
@There @Tomalak: So we can solve problems rather than answer questions. 如果将其用于某些实际目的并且我们知道该目标,我们可以采取完全不同且可能更合适的路线。询问步骤永远不如询问目标有用。如果有人问“如何调整动态数组的大小?”答案是使用
std::vector,而不是继续沿着错误的路径前进。你可以这样回答,因为你知道目标,而不是步骤。 -
@GMan:我最不同意 Stack Overflow 上的“回答问题,而不是问题”。这是一个问答网站,而不是一个 P&A 网站。如果有人提出问题,请回答...不要再猜测他们,并尝试仔细检查他们这样做的动机。 (无论如何,这将在 cmets 中自然而然地出现。:P)
-
@Tomalak:我不同意直接的问答方式。如果提问者每次都知道他们想要做什么,那很好,但大多数时候(也就是说,并非例外),他们不知道。我的目标是帮助人们,这意味着了解他们的目标。把我的头埋在沙子里,表现得好像我没有看到真正的问题或更好的方法只会伤害人们。
标签: c++ metaprogramming range-checking