6
我想用编译时间已知值调用其中一个ctors时进行一些检查。有没有办法检测到它?SFINAE:检测一个函数是否被编译时间已知值调用
因此,当有人称之为:
A a (10);
因为10是已知常数编译时间,我喜欢称之为一种特殊的构造函数,像这样:
template<int Value, typename = std::enable_if_t<Value <= 100>>
A (int Value) {}
任何想法,我该如何解决这个问题? 谢谢!
感谢您的想法阅读更多关于这个操作符,可惜事实并非如此。我的lib的一个非常重要的一点是它必须和简单的基本类型一样易于使用。像99%的C++程序员甚至不知道有关integral_constant。 – Melkon
这实际上是一个非常好的解决方案,+1,其余99%的C++程序员应该了解'integral_constant' :)我肯定会走这条路线,如果你想要它只是在编译时测试一些常量的值时间。 – vsoftco
@vsoftco这就是上下文:我正在处理一个不变的lib,它意味着根据原始类型替换断言(或其他类型的检查)并将它们放入类型信息中。其目标就是像原始类型一样简单,但会生成更好更高效的代码。这个integral_constant版本是一个很好的补充,但我的目的是默默地优化事情,而用户不必考虑它。当然,有些会使用integral_constant,但大多数不会,老实说,如果他们必须使用它,代码将不会更好,这是我想要实现的。 – Melkon