在C++中,对于C++11 on up,我希望能够在编译时确定一个或多个类型上的特定操作是否有效,布尔值'true‘表示操作有效,布尔值'false’表示操作无效。
在Boost.TypeTraits库中,有一些操作作为库的一部分,称为“操作符类型特征”,它可以为我确定非常大范围的操作符类型。我不是在质疑这段代码的价值,因为它非常棒。它是为在C++03级别工作而编写的,但确实有一些限制。作为对特定级别C++的C++增强的一部分,某些C++ 是否具有编译时对这种确定的支持?例如,给定类型T和类型U,我想创建一个编译时问题,即A+B是否是有效操作。我不能说decltype(T() + U()),因为如果这是无效的,我将得到一个编译时错误。相反,我想写的代码基本上是“如果decltype(T() + U())”是有效的,做这个,否则做那个。这可能吗?
发布于 2021-04-28 09:45:45
你应该看看void_t,它是在C++14中引入的,但是,它没有什么不能在C++11中工作的地方。
看看沃尔特·布朗的excellent talk about ,大约从29:00开始(但你应该看整个演示文稿)
https://stackoverflow.com/questions/67292638
复制相似问题