<?xml version="1.0" encoding="utf-8"?><rss version="2.0">
<channel>
<title><![CDATA[sonicling]]></title>
<link>http://blog.pfan.cn/sonicling</link>
<description>编程爱好者博客</description>
<language>zh-cn</language>
			<item>
		<title><![CDATA[我写的一个脚本解释器]]></title>
		<link>http://blog.pfan.cn/sonicling/32437.html</link>
		<description><![CDATA[下载地址
======================================================================
已经更新，为所有类型添加了成员函数，下面是所有全局函数和成员函数的说明。
全局函数：get()&nbsp;&nbsp; // 返回一个记号，或者双引号括起来的字符串getline() // 返回一行print(...) // 打印所有参数println(...) // 打印所有参数，最后还输出一个回车exec(...) // 将所有参数作为控制台的字符串命令来执行，从左到右，&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //直到某一个命令失败（返回结果不为0），并返回最后那个命令的返回值。
成员函数object.type() // 返回字符串&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //"object", "string", "integer", "bool", "array", "nat"[not a type, e.g. null.type() = "nat"]object.string() // 将obj转换为字符串，相当于java的toStringobject.integer() // 将obj转换为整数object.bool()&nbsp; // 将obj转换为bool
string.length()string.indexOf(subs, [off])string.subString(start, count)
array.length() // 返回数组的元素个数
注：所有值都是object，包括常量，string是字符串对象，array是数组。
function split(string, sparator){&nbsp;&nbsp;&nbsp; if(sparator == null) sparator = "";&nbsp;&nbsp;&nbsp; array = null;&nbsp;&nbsp; &nbsp;count = 0;&nbsp;&nbsp; &nbsp;while(string]]></description>
		<author><![CDATA[SonicLing]]></author>
		<pubDate>2008-01-26 17:17:00</pubDate>
		</item>
				<item>
		<title><![CDATA[Concepts&nbsp;and&nbsp;Rvalue&nbsp;Reference&nbsp;：&nbsp;C++0x&nbsp;wi]]></title>
		<link>http://blog.pfan.cn/sonicling/22388.html</link>
		<description><![CDATA[Concepts and Rvalue Reference ： C++0x will come
C++0x马上就要出来了。目前已经有许多提议已经大致成型，下面是最有可能出现在C++0x标准中的几个提议：
一、Concepts
Concept是BS极力要加入的一个新特性，用来对模板实例进行限制。例如
template&lt;typename T&gt;T max(T a, T b){&nbsp;&nbsp;&nbsp; return a&lt;b?b:a;}
typename关键字允许T是任何实例，但是max的代码却对T有隐含的限制：T必须能够用“&lt;”进行比较。
再例如
template&lt;typename InputIterator&gt;InputIterator advance(InputIterator iter, size_t n){&nbsp;&nbsp;&nbsp; //...}
InputIterator必须能够进行++操作。而考虑到advance对不同iterator的优化，可能需要iter+n的操作。
为了让编译器有效检查泛型参数的实例类型，加入Concept特性。
声明一个Concept：
auto concept LessThanCompareable&lt;typename T&gt;{&nbsp;&nbsp;&nbsp; bool operator &lt; (T, T); // 必须存在该函数};
auto关键字表示对运算符重载进行更广义的匹配，例如T::operator(const T&amp;)也被认为符合上面的Concept
template&lt;LessThanCompareable T&gt;T max(T a, T b){&nbsp;&nbsp;&nbsp; return a&lt;b?b:a;}
或者使用where从句
template&lt;typename T&gt;T max(T a, T b)where LessThanCompareable&lt;T&gt;{&nbsp;&nbsp;&nbsp; return a&lt;b?b:a;}
where从句可以对多个参数进行联合检查：auto concept Convertible&lt;typename U, typename]]></description>
		<author><![CDATA[SonicLing]]></author>
		<pubDate>2007-01-09 00:26:00</pubDate>
		</item>
				<item>
		<title><![CDATA[对线程的简单封装]]></title>
		<link>http://blog.pfan.cn/sonicling/19184.html</link>
		<description><![CDATA[线程是操作系统的一个概念。通常操作系统通过一组逻辑上关联的API函数实现对线程的操作。但是在面向对象编程中，C方式的API调用显然与其他的对象代码不符合。因此提供我的封装方法，简单有效，以Windows平台为例。
#pragma once#include &lt;windows.h&gt;
class Thread{public:&nbsp;&nbsp;&nbsp; Thread(const char *name)&nbsp;&nbsp;&nbsp; : hThread(0), dwThread(0), bTerminated(false), pname(name){}&nbsp;&nbsp;&nbsp; ~Thread()&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End();&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; void Start()&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(hThread == 0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hThread = CreateThread(0,0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (LPTHREAD_START_ROUTINE)Thread::ThreadProc,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this,0,&amp;dwThread]]></description>
		<author><![CDATA[SonicLing]]></author>
		<pubDate>2006-10-10 14:23:00</pubDate>
		</item>
				<item>
		<title><![CDATA[大学时代接口实验之小键盘接口程序]]></title>
		<link>http://blog.pfan.cn/sonicling/19183.html</link>
		<description><![CDATA[需要和8255程序一同连接，注意初始化参数与引脚连接方式有关。
.286public&nbsp;_getcharextrn&nbsp;_i8255:near,_outpb:near,_inpa:neardseg&nbsp;segment para public 'DATA'INVALID equ 0ffhg_ch_tbl&nbsp; db&nbsp;'C','D','E','F','B','A','9','8'&nbsp;&nbsp;db&nbsp;'4','5','6','7','3','2','1','0'&nbsp;&nbsp;db&nbsp;'W','X','Y','S','R','P','M','G'dseg&nbsp;endscseg&nbsp;segment para public 'CODE'&nbsp;assume cs:cseg,ds:dsegstart:_getchar proc&nbsp;&nbsp;&nbsp;;char getchar(){&nbsp;call&nbsp;_testkey&nbsp;;&nbsp;char al = testkey();&nbsp;cmp&nbsp;al,0ffh&nbsp;&nbsp;;&nbsp;if(al == INVALID){&nbsp;je&nbsp;gc_ret&nbsp;&nbsp;;&nbsp;&nbsp; return INVALID;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;else{&nbsp;call&nbsp;_scankey&nbsp; ;&nbsp;&nbsp; al = scankey();&nbsp;cmp&nbsp;al,INVALID&nbsp;;&nbsp;&nbsp; if(al == INVALID) return INVALID;&nbsp;je&nbsp;gc_ret&nbsp;mov&nbsp;bx,ax&nbsp;&nbsp;;&nbsp;&nbsp; return g_ch_tbl[al];&nbsp;mov&nbsp;al,g_ch_tbl[bx] ;&nbsp;}&nbsp;retgc_ret: mov&nbsp;ax,INVALID&nbsp;ret_getch]]></description>
		<author><![CDATA[SonicLing]]></author>
		<pubDate>2006-10-10 14:14:00</pubDate>
		</item>
				<item>
		<title><![CDATA[大学时代接口实验：时钟的实现]]></title>
		<link>http://blog.pfan.cn/sonicling/19182.html</link>
		<description><![CDATA[该程序需要与8253、8255、8259、LED、小键盘对应的asm编译结果进行连接才可以通过。
（将8255和8253、8259以及LED和小键盘的程序分别编译为obj，然后所有obj一起link。）
8255的代码：http://blog.programfan.com/article.asp?id=19179
8253+8259的代码：http://blog.programfan.com/article.asp?id=19180
LED的代码：http://blog.programfan.com/article.asp?id=19181
小键盘的代码：http://blog.programfan.com/article.asp?id=19183
.286extrn&nbsp;_getchar:near,_setledbuf:near,_printled:near,_setmask:near&nbsp;;displayextrn&nbsp;_setint:near,_clrint:near&nbsp;;interruptionextrn&nbsp;_i8255:near,_i8253:near,_i8259:near&nbsp;;initializationpublic&nbsp;chgflg,minute,seconddseg&nbsp;segment para public 'DATA'MAXCT&nbsp;equ&nbsp;20shutfg&nbsp;db&nbsp;0hchgflg&nbsp;db&nbsp;0hchgfg2&nbsp;db&nbsp;0hsetmod&nbsp;db&nbsp;0htmask&nbsp;db&nbsp;0hcount&nbsp;db&nbsp;MAXCTminute&nbsp;db&nbsp;0hsecond&nbsp;db&nbsp;0hdseg&nbsp;endscseg&nbsp;segment para public 'CODE'&nbsp;assume&nbsp;cs:cseg,ds:dsegstart:&nbsp;mov&nbsp;ax,dseg&nbsp;mov&nbsp;ds,ax&nbsp;mov&nbsp;es,ax
init:&nbsp;call&nbsp;_i8253&nbsp;&nb]]></description>
		<author><![CDATA[SonicLing]]></author>
		<pubDate>2006-10-10 14:09:00</pubDate>
		</item>
				<item>
		<title><![CDATA[大学时代接口实验LED接口代码]]></title>
		<link>http://blog.pfan.cn/sonicling/19181.html</link>
		<description><![CDATA[注释是对应的伪C代码，注意初始化参数和引脚连接方式有关。
.286public&nbsp;_getchar,_setledbuf,_addledbuf,_printled,_i8255,_delaydseg&nbsp;segment&nbsp;para public 'DATA'PORT_CON equ 21bhPORT_PA&nbsp;equ 218hPORT_PB&nbsp;equ 219hINVALID equ 0ffhg_led_buf&nbsp;db&nbsp;6 dup(3fh)g_led_tbl&nbsp;db&nbsp;3fh,06h,5bh,4fh,66h,6dh,7dh,07h&nbsp;&nbsp;db&nbsp;7fh,6fh,77h,7ch,39h,5eh,79h,71hg_ch_tbl&nbsp;db&nbsp;'C','D','E','F','B','A','9','8'&nbsp;&nbsp;db&nbsp;'4','5','6','7','3','2','1','0'&nbsp;&nbsp;db&nbsp;'W','X','Y','S','R','P','M','G'dseg&nbsp;endscseg&nbsp;segment&nbsp;para public 'CODE'&nbsp;assume cs:cseg,ds:dseg_main&nbsp;proc&nbsp;&nbsp;&nbsp;;void main(void)start:&nbsp;mov&nbsp;ax,dseg&nbsp;&nbsp;;{&nbsp;mov&nbsp;ds,ax&nbsp;mov&nbsp;es,ax
&nbsp;call&nbsp;_i8255&nbsp;&nbsp;;&nbsp;i8255();&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;while(true)&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;{mainlp: call&nbsp;_printled&nbsp;call&nbsp;_getchar&nbsp;;&nbsp;&nbsp;char key = getchar();&nbsp;cmp&nbsp;al,'R'&nbsp;&nbsp;;&nbsp;&nbsp;if(key != 'R')&]]></description>
		<author><![CDATA[SonicLing]]></author>
		<pubDate>2006-10-10 14:05:00</pubDate>
		</item>
				<item>
		<title><![CDATA[大学时代8253+8259A芯片的接口程序]]></title>
		<link>http://blog.pfan.cn/sonicling/19180.html</link>
		<description><![CDATA[由于实验用的电路板固定了8259A芯片的中断向量为0A，因此程序中只使用10号中断。
_i8259和_i8253分别是两个芯片的初始化自程序，_setint和_clrint是设置中断和清理中断的自程序，_iserv是10号中断使用的中断服务子程序，其算法是用来计算时间来实现电子时钟的功能。只负责计算不负责输入和输出。可以根据需要改写此中断服务子程序。
注意：芯片的初始化参数根据芯片引脚的连接方式而定。
.286public&nbsp;_iserv,_setint,_clrint,_i8253,_i8259extrn&nbsp;minute:byte,second:byte,chgflg:byte&nbsp;;for iserv()dseg&nbsp;segment para public 'DATA'P8253_A equ&nbsp;208hP8253_B equ&nbsp;209hP8253_C equ&nbsp;20ahP8253_CON equ&nbsp;20bhold0a&nbsp;dd&nbsp;?dseg&nbsp;endscseg&nbsp;segment para public 'CODE'&nbsp; assume cs:cseg,ds:dsegstart:_iserv&nbsp;proc&nbsp;&nbsp;&nbsp;;void iserv()&nbsp; pusha&nbsp;&nbsp;&nbsp;;{&nbsp; push&nbsp;ds&nbsp; mov&nbsp;ax,dseg&nbsp; mov&nbsp;ds,axis_beg:&nbsp; cmp&nbsp;byte ptr chgflg,0h;&nbsp;if(!chgflg) goto is_exit //no change permitting&nbsp; je&nbsp;is_exit&nbsp; mov&nbsp;al,byte ptr second&nbsp; cmp&nbsp;al,59h&nbsp;&nbsp;;&nbsp;if(second != 0x59)&nbsp; je&nbsp;is_min&nbsp;&nbsp;;&nbsp;{&nbsp; add&nbsp;al,1&nbsp;&nbsp;;&nbsp;&nbsp;second += 1;&]]></description>
		<author><![CDATA[SonicLing]]></author>
		<pubDate>2006-10-10 13:57:00</pubDate>
		</item>
				<item>
		<title><![CDATA[大学时代8255A芯片的接口程序]]></title>
		<link>http://blog.pfan.cn/sonicling/19179.html</link>
		<description><![CDATA[这个是8255A芯片的接口库，专门供其它的asm文件调用的。
_i8255是8255A初始化子程序
.286public&nbsp;_i8255,_outpb,_inpadseg&nbsp;segment para public 'DATA'PORT_CON equ 21bhPORT_PA equ 218hPORT_PB equ 219hINVALID equ 0ffhdseg&nbsp;endscseg&nbsp;segment para public 'CODE'&nbsp;assume cs:cseg,ds:dsegstart:_outpb&nbsp;proc&nbsp;&nbsp;&nbsp;;void outpb(char outcode)&nbsp;push&nbsp;dx&nbsp;&nbsp;;{&nbsp;mov&nbsp;dx,PORT_PB&nbsp;out&nbsp;dx,al&nbsp;&nbsp;;&nbsp;_asm{out PORT_PB,outcode};&nbsp;pop&nbsp;dx&nbsp;ret_outpb&nbsp;endp&nbsp;&nbsp;&nbsp;;}
_inpa&nbsp;proc&nbsp;&nbsp;&nbsp;;char inpa()&nbsp;push&nbsp;dx&nbsp;&nbsp;;{&nbsp;mov&nbsp;dx,PORT_PA&nbsp;in&nbsp;al,dx&nbsp;&nbsp;;&nbsp;_asm{in PORT_PA,al};&nbsp;pop&nbsp;dx&nbsp;ret_inpa&nbsp;endp&nbsp;&nbsp;&nbsp;;}
_i8255&nbsp;proc&nbsp;&nbsp;&nbsp;;void i8255()&nbsp;push&nbsp;dx&nbsp;&nbsp;;{&nbsp;mov&nbsp;dx,PORT_CON&nbsp;mov&nbsp;al,10010000b&nbsp;out&nbsp;dx,al&nbsp;pop&nbsp;dx&nbsp;ret_i8255&nbsp;endp&nbsp;&nbsp;&nbsp;;}
cseg&nbsp;ends&nbsp;end&nbsp;start]]></description>
		<author><![CDATA[SonicLing]]></author>
		<pubDate>2006-10-10 13:49:00</pubDate>
		</item>
				<item>
		<title><![CDATA[位指针的模拟]]></title>
		<link>http://blog.pfan.cn/sonicling/17128.html</link>
		<description><![CDATA[struct __bit_ptr{&nbsp;&nbsp;&nbsp; typedef unsigned char byte;&nbsp;&nbsp;&nbsp; typedef __bit_ptr bit_type;&nbsp;&nbsp;&nbsp; byte * pbyte;&nbsp;&nbsp;&nbsp; int pos;
&nbsp;&nbsp;&nbsp; __bit_ptr() : pbyte(0), pos(0) {}&nbsp;&nbsp;&nbsp; __bit_ptr(const __bit_ptr&amp; ptr) : pbyte(ptr.pbyte), pos(ptr.pos) {}&nbsp;&nbsp;&nbsp; bool is_valid() {return pbyte!=0;}&nbsp;&nbsp;&nbsp; __bit_ptr&amp; operator++ ()&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(++pos&gt;=8){ pos=0; pbyte++; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return *this;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; __bit_ptr operator++ (int)&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; __bit_ptr bp(*this);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(++pos&gt;=8){ pos=0; pbyte++; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return bp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; __bit_ptr&amp; operator += (int n)&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos += n;&nbsp;&nbsp;]]></description>
		<author><![CDATA[SonicLing]]></author>
		<pubDate>2006-08-02 20:08:00</pubDate>
		</item>
				<item>
		<title><![CDATA[分析类型的一个小实验]]></title>
		<link>http://blog.pfan.cn/sonicling/17098.html</link>
		<description><![CDATA[#include&nbsp;&lt;cstdlib&gt;#include&nbsp;&lt;iostream&gt;using&nbsp;namespace&nbsp;std;template&lt;typename&nbsp;T&gt;void&nbsp;print(const&nbsp;T&nbsp;&amp;a)&nbsp;{cout&nbsp;&lt;&lt;&nbsp;"unknown"&nbsp;&lt;&lt;&nbsp;endl;}template&lt;&gt;void&nbsp;print&lt;double&gt;(const&nbsp;double&nbsp;&amp;a)&nbsp;{cout&nbsp;&lt;&lt;&nbsp;"double"&nbsp;&lt;&lt;&nbsp;endl;}template&lt;&gt;void&nbsp;print&lt;float&gt;(const&nbsp;float&nbsp;&amp;a)&nbsp;{cout&nbsp;&lt;&lt;&nbsp;"float"&nbsp;&lt;&lt;&nbsp;endl;}template&lt;&gt;void&nbsp;print&lt;int&gt;(const&nbsp;int&nbsp;&amp;a)&nbsp;{cout&nbsp;&lt;&lt;&nbsp;"int"&nbsp;&lt;&lt;&nbsp;endl;}int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;*argv[]){&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;a;int&nbsp;b;float&nbsp;c;short&nbsp;int&nbsp;&nbsp;d;&nbsp;&nbsp;&nbsp;&nbsp;print((c*b+a)*d);&nbsp;&nbsp;&nbsp;&nbsp;system("PAUSE");&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}float请按任意键继续.&nbsp;.&nbsp;.]]></description>
		<author><![CDATA[SonicLing]]></author>
		<pubDate>2006-08-01 21:10:00</pubDate>
		</item>
				<item>
		<title><![CDATA[字符串匹配]]></title>
		<link>http://blog.pfan.cn/sonicling/17097.html</link>
		<description><![CDATA[字符串匹配在Windows命令的使用中，有两个经常使用的通配符：*和?。*表示0个、1个或者多个字符，?表示0个或者1个字符。使用通配符可以利用dir命令搜索特定名字的文件。例如
引用： 
J:\WINDOWS\system32&gt;dir&nbsp;msvc*dll&nbsp;驱动器&nbsp;J&nbsp;中的卷是&nbsp;WinXP&nbsp;卷的序列号是&nbsp;58A6-6950&nbsp;J:\WINDOWS\system32&nbsp;的目录2002-01-05&nbsp;&nbsp;03:38&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;54,784&nbsp;msvci70.dll2001-11-03&nbsp;&nbsp;01:19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;50,688&nbsp;msvcirt.dll2001-11-03&nbsp;&nbsp;01:19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;565,760&nbsp;msvcp50.dll2001-11-03&nbsp;&nbsp;01:19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;401,462&nbsp;msvcp60.dll2002-01-05&nbsp;&nbsp;03:40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;487,424&nbsp;msvcp70.dll2003-03-18&nbsp;&nbsp;22:14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;499,712&nbsp;msvcp71.dll2002-01-05&nbsp;&nbsp;03:37&nbsp;&nbsp;&nbsp;&nbsp;&n]]></description>
		<author><![CDATA[SonicLing]]></author>
		<pubDate>2006-08-01 21:07:00</pubDate>
		</item>
				<item>
		<title><![CDATA[模板的妙用]]></title>
		<link>http://blog.pfan.cn/sonicling/17096.html</link>
		<description><![CDATA[#include&nbsp;&lt;cstdlib&gt;#include&nbsp;&lt;iostream&gt;using&nbsp;namespace&nbsp;std;template&lt;typename&nbsp;T,&nbsp;size_t&nbsp;n&gt;bool&nbsp;__is_array(T&nbsp;(&amp;a)[n])&nbsp;{return&nbsp;true;}bool&nbsp;__is_array(...)&nbsp;{return&nbsp;false;}template&lt;typename&nbsp;T&gt;bool&nbsp;IsArray(T&nbsp;&amp;a){&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;__is_array(a);}template&lt;typename&nbsp;T,&nbsp;size_t&nbsp;n&gt;void&nbsp;Test(&nbsp;T&nbsp;(&amp;array)[n],&nbsp;bool&nbsp;first&nbsp;=&nbsp;false);template&lt;typename&nbsp;T,&nbsp;size_t&nbsp;n&gt;void&nbsp;Test_Shadow(&nbsp;T&nbsp;(&amp;array)[n]);template&lt;typename&nbsp;T&gt;void&nbsp;Test(&nbsp;T&amp;&nbsp;){}template&lt;typename&nbsp;T&gt;void&nbsp;Test_Shadow(&nbsp;T&amp;&nbsp;){}template&lt;typename&nbsp;T,&nbsp;size_t&nbsp;n&gt;void&nbsp;Test(&nbsp;T&nbsp;(&amp;array)[n],&nbsp;bool&nbsp;first&nbsp;){&nbsp;&nbsp;&nbsp;&nbsp;if(first)&nbsp;cout&nbsp;&lt;&lt;&nbsp;"the&nbsp;array&nbsp;is&nbsp;like&nbsp;A";&nbsp;&nbsp;&nbsp;&n]]></description>
		<author><![CDATA[SonicLing]]></author>
		<pubDate>2006-08-01 20:59:00</pubDate>
		</item>
		</channel>
</rss>