如何在编译时确认自动推理类型的假设?(即static_assert样式

Ale*_*cio 3 c++ static-assert compile-time c++11

偶尔,我会将函数的返回值赋给auto类型的变量(例如auto returnValue = someFunction();),但希望澄清/强制执行关于该变量类型的某些假设 - 即它是类型的int.

虽然Concepts&type_traits提供了一些非常强大的静态假设验证功能,但它们不支持这样的内容:

static_assert( isType( returnValue, int ) );
//OR
static_assert( int == typeof( returnValue ) );
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

qua*_*dev 7

您可以使用类型特征,即std::is_same:

static_assert( std::is_same<int, decltype( returnValue ) >:: value  ,  "Error, Bad Type");
Run Code Online (Sandbox Code Playgroud)

在这里演示.