Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 窄带演员做什么?_C++_Guideline Support Library - Fatal编程技术网

C++ 窄带演员做什么?

C++ 窄带演员做什么?,c++,guideline-support-library,C++,Guideline Support Library,我看到一个代码使用了这样的窄播 int num = narrow_cast<int>(26.72); cout << num; 我应该自己定义窄播吗,还是我用了错误的方法,还是没有类似的窄播 gsl的狭窄演员阵容实际上是一个静态演员阵容。但它更明确,您可以稍后搜索它。您可以自己检查以下各项: // narrow_cast(): a searchable way to do narrowing casts of values template <class T, c

我看到一个代码使用了这样的
窄播

int num = narrow_cast<int>(26.72);
cout << num;

我应该自己定义
窄播
吗,还是我用了错误的方法,还是没有类似的
窄播

gsl的狭窄演员阵容实际上是一个静态演员阵容。但它更明确,您可以稍后搜索它。您可以自己检查以下各项:

// narrow_cast(): a searchable way to do narrowing casts of values
template <class T, class U>
GSL_SUPPRESS(type.1) // NO-FORMAT: attribute
constexpr T narrow_cast(U&& u) noexcept
{
    return static_cast<T>(std::forward<U>(u));
}
//shown_cast():一种可搜索的方法,用于对值进行缩小强制转换
模板
GSL_SUPPRESS(type.1)//无格式:属性
constexpr T狭窄型(U&U)无例外
{
返回静态_cast(std::forward(u));
}

<代码> SimulasCase不是标准C++的一部分。您需要编译并运行这个。您可能没有注意到这一点,这就是它没有编译的原因。

在Bjarne Stroustrup的《C++(11)编程语言》一书的“11.5显式类型转换”一节中,您可以看到它是什么

基本上,它是一个自制的显式模板化转换函数,在这种情况下,当值可能被缩小时会抛出异常,而静态_cast不会抛出异常

它对目标类型进行静态转换,然后将结果转换回原始类型。如果得到相同的值,则结果是正常的。否则,就不可能得到原始结果,因此该值会缩小,从而丢失信息

您还可以看到一些示例(第298和299页)


此构造可用于第三方库,但据我所知,它不属于C++标准。

搜索关键词:“SimulasCaseC++”,第三个链接:谢谢,但如果您只告诉我它是什么,它会非常有用。
// narrow_cast(): a searchable way to do narrowing casts of values
template <class T, class U>
GSL_SUPPRESS(type.1) // NO-FORMAT: attribute
constexpr T narrow_cast(U&& u) noexcept
{
    return static_cast<T>(std::forward<U>(u));
}