首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从泛型中获取bool值作为返回的对象

从泛型中获取bool值作为返回的对象,可以使用以下方法:

  1. 使用模板特化:
代码语言:cpp
复制
template<typename T>
class BoolWrapper {
public:
    static bool getBool() {
        return false;
    }
};

template<>
class BoolWrapper<bool> {
public:
    static bool getBool() {
        return true;
    }
};
  1. 使用std::is_same:
代码语言:cpp
复制
#include <type_traits>

template<typename T>
bool getBool() {
    return std::is_same<T, bool>::value;
}
  1. 使用std::enable_if:
代码语言:cpp
复制
#include <type_traits>

template<typename T>
typename std::enable_if<!std::is_same<T, bool>::value, bool>::type
getBool() {
    return false;
}

template<typename T>
typename std::enable_if<std::is_same<T, bool>::value, bool>::type
getBool() {
    return true;
}

以上方法都可以用于从泛型中获取bool值作为返回的对象。具体使用哪种方法,需要根据实际情况进行选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

打个赌你可能不知道如何获取Java泛型的Class对象

Java中的泛型有着很重要的作用,它能够让我们的数据容器类型安全,避免发生转换异常。...不过Java中的泛型也为人诟病,它会在编译中被全部转换成Object对象,也就是泛型擦除,这造成了诸多不便,除非你能获取泛型的一个实例,否则我们无法直接获取泛型的实际类型。...大致原理 虽然泛型会在字节码编译过程中被擦除,但是Class对象会通过java.lang.reflect.Type记录其实现的接口和继承的父类信息。...AbstractList的具体泛型,所以获取到的就是占位符E。...那么问题来了如何封装一个工具类? 封装工具类 我们可以借助于抽象类来定义一个获取java.lang.reflect.ParameterizedType的工具类。

20.7K41
  • C#高级语法之泛型、泛型约束,类型安全、逆变和协变(思想原理)

    我们看一下泛型是如何定义的: //用在类中 public class ClassName { //用在方法中 public void Mothed() {...} //泛型类中具体使用CName //返回值为CName并且接受一个类型为CName类型的对象 public CName GetC(CName c) {...、逆变时泛型无法作为返回值。...所以当逆变作为参数传递时,类型是安全的。 思考:那么,现在你能明白上面那个错误,为什么“协变时泛型无法作为参数、逆变时泛型无法作为返回值”了吗?...)一个默认值default(T)或者new T() //此时使用第二种方法调用TestIn,并在TestIn中调用In方法 //注意,在TestIn中In方法的显示返回值肯定是Dog,但是实际上要返回的类型是

    7.1K30

    在C++中反射调用.NET(三) 使用非泛型集合的委托方法C++中的列表对象list C++传递集合数据给.NET创建泛型List实例反射静态方法反射调用索引器当委托遇到协变和逆变C++CLI

    在.NET与C++之间传输集合数据 上一篇《在C++中反射调用.NET(二)》中,我们尝试了反射调用一个返回DTO对象的.NET方法,今天来看看如何在.NET与C++之间传输集合数据。...使用非泛型集合的委托方法 先看看.NET类中的一个返回列表数据的方法: //返回List或者数组,不影响 C++调用 public List GetUsers(string...创建泛型List实例 我们使用List来做集合对象,在C#中,我们可以通过下面的方式得到List泛型的类型,然后进一步创建泛型对象实例: Type t= typeof(List); 但是,对应的C+...一切准备就绪,下面可以通过以下步骤提交集合数据给.NET方法了: 1,反射.NET方法,获取参数的泛型形参类型; 2,创建此泛型形参的泛型List对象实例; 3,遍历C++集合(列表list),将结构数据赋值给动态创建的实体类对象...,IEnumerable> fun; Func fun2; 这里,fun,fun2都可以绑定到方法上,因为泛型方法的形参作为返回值,是out

    9.1K100

    使用集合组织相关数据

    中实际包含的元素数             Capacity 获取ArrayList的容量    返回值类型          方法名称            说明      int  Add... Remove(Object value) 从ArrayList中移除特定的对象       void  Clear() 从ArrayList中移除所有元素       bool  Contains...Hashtable中      void  Remove(Object key)  从Hastable中移除带有指定键的元素      void  Clear()  从Hastable中移除所有元素...4:(nums.Lenght*2); 二.泛型和泛型集合   1.泛型     引入概念:集合参数类型     可以最大限度地重用代码,保护类型的安全及提高性能     List,Dictionary...这部分就不多做结束,大家可以通过MSDN了解 ★注:泛型集合可以作为类的一个属性,使用泛型集合必须实例化~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    79280

    C#泛型方法解析

    一.泛型的基本特性概述:     在实际项目开发中,任何API只要将object作为参数类型和返回类型使用,就可能在某个时候涉及强类型转换。...使用一个泛型类型并指定类型实参时,实际是在CLR中定义一个新类型对象,新类型对象是从泛型派生自的那个类型派生的。...下面简单的介绍一种泛型集合类:      (1).SynchronizedCollection:提供一个线程安全集合,其中包含泛型参数所指定类型的对象作为元素....如果集合中不包含类型 的对象,则返回类型的默认值:如果是引用类型,默认值为 null;如果是值类型,默认值为 0。...类型参数可以作为方法的参数,作为方法的返回值,或者作为方法内部定义的一个局部变量来使用。CLR允许一个方法指定它独有的类型参数,这些类型参数可用于参数、返回值、或者局部变量。

    3.4K90

    浅谈泛型

    大多数算法都封装在一个类型中,CLR允许创建泛型引用类型和泛型值类型,以及泛型接口和泛型委托。所以CLR允许在类或接口中定义泛型方法。...来看一个简单例子,Framework类库定义了一个泛型列表算法,它知道如何管理对象集合。泛型算法没有设定数据的类型。要在使用这个泛型列表算法时指定具体的数据类型。...更好的性能,不进行装箱。 FCL中的泛型 泛型最明显的应用就是集合类。...使用泛型类型并指定类型实参时,实际是在CLR中定义一个新的类型对象,新的类型对象从泛型类型派生自的那个类型派生。...类型参数可以作为方法参数,返回值或者方法内部定义的局部变量的类型使用。不仅如此,CLR还运行方法指定自己的类型参数。这些类型参数也可作为参数、返回值或局部变量的类型使用。

    1K30

    C Sharp(十三)

    因为数组可以提供一个枚举器(enumerator)对象。枚举器对象可以依次返回数组元素。 获取一个对象的枚举器可以调用对象的 GetEnumerator 方法。...foreach 语句就是用来配合可枚举类型一起使用的,他会执行下列行为: 调用 GetEnumerator 方法获取对象的枚举器 从枚举器请求每一项作为迭代变量(iteration variable)...: Current: 返回当前位置项的属性,只读 MoveNext: 把枚举器位置前进到集合下一项的方法,返回布尔值,位置有效返回 true,无效(到达尾部)返回 false。...之前我们写的都是非泛型版本,实际工作中,我们基本都使用泛型版本的 IEnumerator 和 IEnumerable 。...泛型与非泛型版本的主要区别是: IEnumerable 接口的 GetEnumerator 方法要返回实现 IEnumerator 接口的枚举器实例 泛型版本的 Current 属性返回的不是 object

    61620

    .NET深入解析LINQ框架(一:LINQ优雅的前奏)

    我们在定义Filter泛型方法时将Funcbool>泛型委托中的T定义为匿名函数的参数类型,所以在我们使用的时候需要指定出类型实参(int item)中的item来表示委托将要使用的类型参数形参...在编辑器看来我们在定义泛型方法Filter时所用的泛型占位符T也恰巧是Filter方法的形参数据类型Funcbool>中使用的调用参数类型,所以这里的语法分析规则能准确的推断出我们使用的同一种泛型类型实参...按照常理说我在泛型方法的形参里面定义一个泛型的委托,他们的形参类型都是一样的占位符,但是如果我使用带有形参的方法作为委托的参数的话是无法进行类型推断的,然后使用无参数的方法作为委托参数是完全没有问题的。...要想获取匿名类型的各属性值只能通过反射的方式动态的获取运行时的属性对象,然后通过属性对象去获取到属性的值。...通过反射的方式我们就可以顺利的获取到匿名类型的属性成员,然后通过属性信息在顺利的获取到属性的值。

    1.9K31

    理解C#中的ValueTask

    这个操作的完成情况可能有以下几种: 作为初始化操作的一部分同步完成,例如:访问一些已被缓存的数据 恰好在你获取到Task实例的时候异步完成,例如:访问虽然没被缓存但是访问速度非常快的数据 你已经获取到了...但是与上一个返回Taskbool>的案例不同,该方法返回的Int32的可能值约有40亿个结果,如果将它们都缓存下来,大概会消耗数百GB的内存。...或Task,因此它可以从异步方法中返回。...这也意味着非泛型的ValueTask是不必要的(因为没有TResult):对于同步完成的情况,返回值为Task的方法可以返回Task.CompletedTask单例,此单例由async Task方法的运行时隐式返回...因此,在.NET Core 2.1中,我们还引入了非泛型的ValueTask和IValueTaskSource。它们提供泛型版本对应的非泛型版本,使用方式类似,只是GetResult返回void。

    27530

    理解C#中的ValueTask

    只有当操作异步完成时,该方法才需要分配新的Taskbool>,因为调用方在知道操作结果之前,就要得到Taskbool>对象,并且要求该对象是唯一的,这样在操作完成后,就可以将结果存储到该对象中。...但是与上一个返回Taskbool>的案例不同,该方法返回的Int32的可能值约有40亿个结果,如果将它们都缓存下来,大概会消耗数百GB的内存。...或Task,因此它可以从异步方法中返回。...这也意味着非泛型的ValueTask是不必要的(因为没有TResult):对于同步完成的情况,返回值为Task的方法可以返回Task.CompletedTask单例,此单例由async Task方法的运行时隐式返回...因此,在.NET Core 2.1中,我们还引入了非泛型的ValueTask和IValueTaskSource。它们提供泛型版本对应的非泛型版本,使用方式类似,只是GetResult返回void。

    38040

    让我们一起写出更有效的CSharp代码吧,少年们!

    right : left } 推荐使用泛型的Tuple作为输出和引用参数 当设置方法的返回值,或者在需要使用ref参数的情形时,使用Tuple元组可以使代码更清晰,当然如果参数比较复杂,还是选择建立对应的...DTO类型为宜 在泛型接口上增加对应的传统接口 这个在大家基础架构时非常重要,每个方法均提供泛型版本和object版本,使得代码有很强的兼容性。...,一个是延迟的返回值,仅仅是一个方便理解的小思路哈。...IEnumerable对象,因而如果实际的返回值为IQueryable对象,那么不要经行相关的转化,当然也可以通过typeA as IQueryable来尝试转化,如果本来就是IQueryable对象则直接返回...将数组参数限制为参数数组 由于数组的不确定性,因而不推荐将数组作为参数(指的是不同类型的数据放入一个object[]中,使得方法的使用非常容易出错,当然泛型的数据集合等除外),而推荐params的形式来传递相应数据

    1.1K50

    面试又挂了,你理解了 Java 8 的 Consumer、Supplier、Predicate和Function吗?

    1 Consumer接口 从字面意思上我们就可以看得出啦,consumer接口就是一个消费型的接口,通过传入参数,然后输出值,就是这么简单,Java8 的一些方法看起来很抽象,其实,只要你理解了就觉得很好用...② 其实,lambda 表达式、方法引用的返回值都是 Consumer 类型,所以,他们能够作为 forEach 方法的参数,并且输出一个值。...中存在数,就返回这个数,如果不存在,就放回传入的数 orElseGet:如果first中存在数,就返回这个数,如果不存在,就返回supplier返回的值 2.4 其他 Supplier 接口 除了上面使用的...创建了一个 Predicate 接口对象,其中,实现类 test 方法,需要传入一个参数,并且返回一个 bool 值,所以这个接口作用就是判断!...其中,泛型的第一个参数是转换前的类型,第二个是转化后的类型。 在上面的代码中,就是获取字符串的长度,然后将每个字符串的长度作为返回值返回。

    18.1K65

    【Flutter】HTTP 网络操作 ( 引入 http 插件 | 测试网站 | Get 请求 | Post 请求 | 将响应结果转为 Dart 对象 | Future 异步调用 )

    http.Response 泛型的 Future , 返回值类型为 Future ; /// 调用 Http Get 方法 , 获取服务器的 json 数据 Future...Dart 类 , 用于表示 将来 某个时间 可能出现的结果 ; http.Get 返回值是 Future , 其中的 http.Response 泛型中 , 封装了 HTTP...Dart 类 , 用于表示 将来 某个时间 可能出现的结果 ; http.Get 返回值是 Future , 其中的 http.Response 泛型中 , 封装了 HTTP..., 会自动调用该 then 方法 /// 传入 Future 的泛型 CommonModel 对象作为参数 httpGet().then...then 方法 , 传入 Future 的泛型 CommonModel 对象作为参数 ; 最后获取到返回值后 , 将返回值设置到 httpGetResult 成员中 ; 调用 setState 方法

    1.9K20

    【BCVP升级】泛型主键的使用

    做这个需求的目的,一是为了灵活框架,二也是为了给大家提供一个思路。 别一上来就说没用,你可以不用我的框架,但是这个思路还是可以了解下的,平时ORM中是如何控制的,而且泛型在项目开发中的作用特别大。...Guid,就算是一个空的对象实例,存入的时候也会有值,具体的写法我下文会举例说明的。...int类型的模式了,如果你想使用Guid的话,应该如何操作呢,很简单,只需要直接修改下泛型参数就行,这里用Advertisement举例子说明下: 1、修改泛型参数为Guid: public class...作为主键,然后用的.ExecuteReturnIdentityAsync()方法,这样返回的是对应的id。...但是现在用了Guid以后,就不能这么用了,因为这样使用的话,这个方法是无效的.ExecuteReturnIdentityAsync(),不仅不会正常的返回id值,也无非自动生成Guid的默认值,你可以使用

    69110

    『Flutter开发实战』一小时掌握Dart语言

    List 类中有许多用于操作 List 的便捷方法,你可以查阅 泛型 和 集合 获取更多与之相关的信息。 Sets 在 Dart 中,set 是一组特定元素的无序集合。...在如下的示例中, Logger 的工厂构造函数从缓存中返回对象,和 Logger.fromJson 工厂构造函数从 JSON 对象中初始化一个最终变量。...类型,值为 View 类型的 Map 对象: var views = Map(); 泛型集合以及它们所包含的类型 Dart的泛型类型是 固化的,这意味着即便在运行时也会保持类型信息...,Java 中的泛型是类型 擦除 的,这意味着泛型类型会在运行时被移除。...参数的类型 (List)。 局部变量的类型 (T tmp)。 你可以查阅 使用泛型函数 获取更多关于泛型的信息。

    5.1K10

    深入.NET平台和C#编程

    (3)C#从2.0版本开始,对泛型提供了更完整的支持,泛型是微软重点推出的内容,它可以使我们程序更加安全,代码清晰,易控制。...new 创建对象可以不用new 类中可以给字段赋值 结构中给字段赋值是错误的 都可以包含字段、方法 都可以实现接口 3-2:理解C#中的值类型与引用类型 a.值类型...) 语法: public void Sort(IComparer comparer) (2)IComparer泛型接口 如果返回值大于0,则x>y....在排序方法里,调用集合的Sort()方法传递的就是实现了 IComparer接口的类的一个对象:students.Sort(New NameComparer); b.接口作为返回值的意义 接口是一组规范...典型的应用就是接口作为参数时,我们要传递一个实现接口的 对象,另一个就是将接口作为返回值,实际上要返回的也是实现了接口的对象。

    1.9K10

    C# TextBox 扩展方法数据验证

    由于大部分从TextBox控件中获取数据值,可以扩展个泛型方法出来,直接根据转换后的数据类型获得值,类似这样,       var value = this.txtSample.GetValue中之后,扩展方法才位于范围中。       注意:扩展方法是在非嵌套、非泛型静态类内部定义的     2....由于转换类型未知,但为值类型,故采用泛型方法设计,并加上strut泛型约束,由于允许自定义处理转换失败时的操作,故传入一个Action委托来实现,如下: public static TResult GetValue...GetMethod()方法,必须传入合适的参数(要反射的方法的签名)来确定方法唯一,例如碰到重载这种情况(比较常见),否则返回值为null,方法的签名中,若参数带有ref 或out 关键字,则Type类型需要加上...其中Action委托无返回值,属于Void类型,Func委托具有返回值,如Func,在Linq操作中比较常见,在该例中,无返回值的必要,故采用Action委托,由于需要处理转换失败的操作

    1.1K10
    领券