#include<iostream>struct Bad {};struct B {};struct A {
Bad operator,(B b){returnBad();}};struct D {};struct Ugly {
D operator>(Bad b){returnD();}} U;struct Terrible {} T;struct Evil {~Evil(){
std::cout <<"破坏"<< std::endl;}};struct Nasty {
Evil operator,(D d){returnEvil();}};struct Idea {voidoperator()(A a, B b){
std::cout <<"保存数据"<< std::endl;}
Nasty operator<(Terrible t){returnNasty();}} gun;//这是个对象.template<typename T,typename U>voidfun(A a, B b){
std::cout <<"哈哈!"<< std::endl;}intmain(){
A a;
B b;// 猜猜结果
fun<A, B>(a, b);
gun<T, U>(a, b);//gun<T|a,b|U>Bad|Evil,D==>破坏.}