C++03 で final

と、いうイディオムがあるという事がここら辺にかかれていたので試してみた。

[ソース]

template<typename T>
class final{
    ~final(){}
    friend T;
};

struct X : virtual final<X>{
    
};

struct test : X{
    
};

int
main(){
    // OK
    X x;

    // ERROR
//  test t;

    return 0;
}


思いつかなったけどコード見てみるとなるほどなーと。