`
stephen80
  • 浏览: 108106 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

trait and policy

    博客分类:
  • c++
 
阅读更多
Trait : type as first class value, great.
template <typename T>
struct AverageTrait
{
    typedef T TAverage;
};

template<>
struct AverageTrait<int>
{
    typedef float TAverage;
};

template <typename T>
typename AverageTrait<T>::TAverage
Average(T arg0, T arg1)
{
    return (static_cast<typename AverageTrait<T>::TAverage>(arg0 + arg1))/2;
}

Average<int>(10,11)

-----------------------------------------------------------------
template <class T,
          class Checker,
          class ThreadModel>
struct SmartPtr: public Checker, ThreadModel{

    T* operator->()
    {
        Check(p);
        Lock(p);

        return p;
    }

    explicit SmartPtr(T* aP)
    {
        p = aP;
    }

    ~SmartPtr()
    {
        delete p;
    }

    T* p;
};

struct NullChecker
{
    template< typename T>
    void Check(T* p)
    {

    }
};

struct SingleThread
{
    template< typename T>
    void Lock(T* t)
    {
    }
};

SmartPtr<int, NullChecker ,SingleThread> sp(new int);
分享到:
评论

相关推荐

    泛型编程技巧(trait_Policy)

    详细讲解了关于c++模板技术中的trait和policy技术,很值得一看。

    Laravel开发-trait-maker

    在Laravel框架中,trait是一种代码复用机制,它允许开发者将一组方法插入到类中,而无需使用继承。Trait Maker是Laravel开发中的一个工具,它提供了一个 artisan 命令来帮助开发者快速创建trait的存根文件,从而简化...

    Laravel开发-artisan-trait-maker

    本教程将深入探讨如何利用Artisan命令行工具创建自定义的Trait存根,以便更高效地管理和组织项目中的代码。 标题 "Laravel开发-artisan-trait-maker" 提及的是一个专门为Laravel定制的工具,它扩展了Artisan命令,...

    rust_and_trait_pub.pdf

    Rust 语言和 Trait Rust 语言是 Mozilla 员工 Graydon Hoare 的私人项目,2009 年 Mozilla 开始赞助这个项目,并在 2010 年首次揭露了它的存在。Rust 1.0 于 2015 年 5 月 15 日发布,现在 Rust 由 Mozilla 支持,...

    Laravel开发-laravel-trait-uuid

    `laravel-trait-uuid`是专门为Laravel设计的一个特性(Trait),用于方便地在Eloquent模型中实现UUID作为主键的功能。 本文将详细讲解如何使用`laravel-trait-uuid`来在Laravel项目中集成UUID,并探讨其背后的工作...

    Big Data in Omics and Imaging_Association Analysis-CRC (2018).pdf

    e standard approach to genomic association analysis is to perform analysis individually, one trait and one variant at a time. e traditional analytic tools were originally designed for analyzing ...

    Personality trait characteristics of differentially gifted students

    Personality trait characteristics of differentially gifted students CLASSIFYING FIRST-GRADE CHILDREN INTO READING GROUPS 189 CHISSOM, B. S., & THOMAS, J. R. Multivariate validity of the Otis-...

    Laravel开发-eloquent-model-trait

    Laravel开发-eloquent-model-trait 为雄辩模型添加有用的方法

    Rust Trait 静态派发与动态派发示例

    文件中的代码可能包含如何定义Trait,如何使用泛型类型参数来实现Trait,以及如何创建和使用Trait对象来实现运行时的多态性。代码示例可能展示了如何通过不同的方式使用同一Trait,并对比了静态派发和动态派发在代码...

    scala trait.pptx

    Scala Trait是Scala语言中的一个核心特性,它在功能上与Java中的接口类似,但在实际应用中却拥有更加强大的能力。在Scala中,特征可以定义属性和方法的实现,这是它比Java接口更加灵活之处。利用特征,可以实现多重...

    Laravel中Trait的用法实例详解

    在Laravel框架中,Trait的使用尤其常见,因为它们可以方便地将特定功能组合到类中,而无需考虑传统的继承层次结构。下面将详细介绍Trait的使用,并结合Laravel中的具体实例进行讲解。 1. Trait的基本概念: Trait...

    Laravel开发-laravel-create-update-trait

    在Laravel框架中,trait是一种代码复用机制,它允许你在多个类之间共享一组方法。在本主题中,我们将深入探讨如何使用Laravel创建和更新trait,特别是在Laravel 5.4版本中。 Laravel 5.4引入了一些新特性,但trait的...

    Laravel开发-addressable-trait

    `addressable-trait`就是一个专门为Laravel 5.1设计的特性,它旨在简化模型对象与地址管理的集成。这个特性使得我们可以方便地在模型上添加、编辑和管理地址信息,无需在每个模型中重复编写相同的功能代码。 首先,...

    PHP Laravel中的Trait使用方法

    Trait可以看作是一种代码片段,它们没有自己的作用域,因此在Trait中定义的变量和方法都是属于类的,而不是Trait本身。 在Laravel中,Trait可以被用在多个地方,例如,可以在模型或者控制器中使用Trait来实现跨类的...

    浅谈PHP中的Trait使用方法

    而Trait的出现很好地解决了这个问题,它可以将公共的方法集中在一个Trait中,然后多个类可以复用这个Trait,实现了代码的复用和解耦。 Trait的使用非常灵活,可以单独使用,也可以在一个类中引入多个Trait。如果在...

    Laravel开发-trait-maker .zip.zip

    这个“Laravel开发-trait-maker .zip”压缩包可能包含了一个工具或教程,帮助开发者更方便地创建和管理Traits。下面将详细讨论Laravel中的Traits及其相关知识点。 1. **Traits的基本概念**: Traits是PHP 5.4引入...

    Laravel开发-laravel-trait-updatedby

    `laravel-trait-updatedby` 是一个专门为Laravel设计的特性(Trait),它帮助开发者方便地在Eloquent ORM(对象关系映射)模型中自动添加或更新`updated_by`字段,这个字段通常用来存储最后更新数据的用户的ID。...

    Laravel开发-laravel-sluggable-trait

    这就是`laravel-sluggable-trait`的作用,它提供了一个方便的方式来为模型生成和管理slug。这个trait是Eloquent ORM(对象关系映射)的一个扩展,帮助我们在数据库记录中创建基于文本的唯一标识符,通常用于URL路径...

    PHP中trait使用方法详细介绍

    如果需要组合多个trait,可以使用逗号分隔trait名称,如`use Trait1, Trait2;`。但当多个trait包含同名方法或属性时,PHP会抛出致命错误。这时,需要使用`insteadof`和`as`操作符来解决冲突。 例如: ```php trait...

Global site tag (gtag.js) - Google Analytics