草庐IT

numeric_traits_integer

全部标签

c++ - std:numeric_limits<double>::epsilon 定义

numeric_limits::espilon返回1和下一个double之间的差值。那么,我是否应该理解两个相邻double之间的距离并不总是相同,例如2和下一个double之间的距离?如果是,我可以解释一下吗? 最佳答案 随着离零越来越远,float的“密度”会很多。这是因为IEEEfloat本质上是以科学记数法存储的,因此范围优于统一精度。(如果是统一精度,那就是定点数,不是float。)换句话说,数字以Significand*2exponent的形式存储,因此如果指数变大,则significand的微小变化会导致数字(反之亦然

c++ - 错误 C2248 : 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>'

收到此错误,我很确定它在operatorvoidCRational::print()const{print(cout);}voidCRational::print(ostream&sout)const{if(m_denominator==1)cout 最佳答案 您需要通过引用而不是值返回ostream。它试图调用构造函数。也可以传递'a'作为引用:ostream&operator我还注意到打印方法可能是错误的。它有sout作为流的名称传递,但随后直接使用cout实现。应该是voidCRational::print(ostream&s

c++ - std::to_integer 的目的是什么?

据我所知,std::to_integer相当于T(value)其中value是类型为std::byte的变量.我研究了主要编译器的一些实现,发现在这种情况下,等效的字面意思是实现为。换句话说,大多数时候to_integer实际上实现为:returnT(value);仅此而已。我不明白的是,这样的功能有什么用?具有讽刺意味的是,缺点甚至超过优点。我应该为这样的函数包含一个完整的头文件,只是为了避免最有可能直接内联的类C类型转换。是否还有其他原因,或者它只是一个漂亮类C类型转换的替代品,仅此而已? 最佳答案 it'sjustreally

c++ - C++11 <type_traits> 模板参数类型推导失败

我正在尝试了解如何使用C++(11).这是我的简单测试程序#includetemplateinlineUadd(typenamestd::enable_if::value,U>::typea,typenamestd::enable_if::value,S>::typeb){returna+b;}intmain(intargc,constchar*argv[],constchar*envp[]){unsignedintui;inti;autoa=add(ui,i);return0;}当使用GCC4.8.1编译时,它会出错/home/per/f.cpp:Infunction‘intmain

c++ - 为什么 type_traits 是用专门的模板结构而不是 constexpr 实现的?

标准将它们指定为模板struct而不是简单的bool值constexpr有什么原因吗?在一个可能会在主要问题的良好答案中得到回答的附加问题中,如何对非结构版本执行enable_if操作? 最佳答案 一个原因是constexpr函数无法提供嵌套的type成员,这在某些元编程情况下很有用。为了清楚起见,我不是只谈论产生类型但显然不能产生类型的转换特征(如make_unsigned)constexpr功能。所有类型特征都提供了这样一个嵌套的type成员,甚至是一元类型特征和二进制类型特征。例如is_void::type是false_typ

c++ - 将 std::integer_sequence 作为模板参数传递给元函数

如何将std::integer_sequence作为模板参数传递给元函数(即不是函数模板)?给出例如以下用例(但不限于此):我想使用整数序列从参数包中删除最后的N类型。我想我可以使用thisSOquestion中的selector,但我未能将整数序列传递给此元函数。#include#includetemplatestructselector{usingtype=std::tuple::type...>;};templatestructremove_last_n{usingIndices=std::make_index_sequence;usingtype=typenameselecto

kotlin - java.lang.Integer 在 Kotlin 中不能强制转换为 java.lang.Long(初始值为 null 时)

如果我有以下内容,它可以工作(即数字得到分配1000)funmain(args:Array){varnumber:Long?=null//ornumber=0valsimpleObject=SimpleClass()number=1000println("Hi+$number")}如果我有以下内容,它可以工作(即数字得到分配1000)importjava.util.*funmain(args:Array){varnumber:Long=0valsimpleObject=SimpleClass()number=simpleObject.getValue()println("Hi+$num

kotlin - java.lang.Integer 在 Kotlin 中不能强制转换为 java.lang.Long(初始值为 null 时)

如果我有以下内容,它可以工作(即数字得到分配1000)funmain(args:Array){varnumber:Long?=null//ornumber=0valsimpleObject=SimpleClass()number=1000println("Hi+$number")}如果我有以下内容,它可以工作(即数字得到分配1000)importjava.util.*funmain(args:Array){varnumber:Long=0valsimpleObject=SimpleClass()number=simpleObject.getValue()println("Hi+$num

c++ - 无法访问类 'std::basic_ios<_Elem,_Traits>' 中声明的私有(private)成员

这个特定方法有问题,不知道如何解决!我得到的错误是上面的:"errorC2248:'std::basic_ios::basic_ios':cannotaccessprivatememberdeclaredinclass'std::basic_ios'C:\ProgramFiles\MicrosoftVisualStudio10.0\VC\include\ostream604"我的方法是:ostreamoperator在标题中:friendstd::ostreamoperator关于如何解决这个问题的任何想法?我认为这与通过引用而不是值传递有关...但我有点困惑!

c++ - std::numeric_limits::is_exact ...什么是可用的定义?

在我解释时,numeric_limits::is_exact的MSDN'sdefinition几乎总是错误的:[all]calculationsdoneon[this]typearefreeofroundingerrors.IBM'sdefinition几乎总是正确的:(或循环定义,具体取决于您如何阅读)atypethathasexactrepresentationsforallitsvalues我确定的是,我可以将2既存储在double中,又存储在long中,并且它们都将被精确表示。然后,我可以将它们都除以10,而它们都不能精确地保存数学结果。给定任何数字数据类型T,定义std::n