C++在编译时确定对一个或多个类型的特定操作是否有效



在C++中,对于C++11,我希望能够在编译时确定一个或多个类型上的特定操作是否有效,布尔值"true"表示该操作有效,值"false"表示该运算无效。

在Boost.TypeTraits库中,有一些操作作为库的一部分,称为";操作员类型特征";,这可以为我确定非常大范围的操作员的这一点。我并不是在质疑这个代码的价值,因为它非常优秀。它是为在C++03级别上工作而编写的,但确实有一些局限性。某些C++,从C++11开始,是否在编译时支持这样的确定,作为对特定级别C++的C++增强的一部分?举个例子,给定类型T和类型U,我想创建一个编译时问题,即a+B是否是一个有效的操作。我不能说decltype(T() + U()),因为如果它无效,我将得到一个编译时错误。相反,我想写的代码基本上说";如果CCD_ 2";是有效的,做这个,否则做那个。这可能吗?

您应该看看void_t,它是在C++14中引入的。然而,其中没有任何内容不应该在C++11中工作。

请参阅Walter Brown关于void_t的精彩演讲,大约从29:00开始(但你应该看整个演示(

最新更新