Home ¡ä 2008-07 / ¡ä This Entry 2006-02 / ¼ÂÁõµ»½Ñ ¡ä This Entry [com : 4][Tb : 1]
const std::basic_string<utf8_t, my_char_traits<utf8_t>, my_allocator<utf8_t> >¤È½ñ¤¯¤Î¤È¡¢
std::basic_string<utf8_t, my_char_traits<utf8_t>, my_allocator<utf8_t> > const¤È½ñ¤¯¤Î¤Ç¤Ï¡¢¤É¤Á¤é¤¬¸«¤ä¤¹¤¤¤Ç¤·¤ç¤¦¤«¡©
const std::basic_string<utf8_t, my_char_traits<utf8_t>, my_allocator<utf8_t> > utf8_str;¤È½ñ¤¯¤Î¤È¡¢
std::basic_string<utf8_t, my_char_traits<utf8_t>, my_allocator<utf8_t> > const utf8_str;¤È½ñ¤¯¤Î¤Ç¤Ï¡¢¤É¤Á¤é¤¬¸«¤ä¤¹¤¤¤Ç¤·¤ç¤¦¤«¡©
http://cppemb.blog17.fc2.com/tb.php/50-457bc5c5
C++ (¤È¤« C) ¸À¸ì¤Î·¿½¤¾þ»Ò¤Ë¤Ï const¡¤volatile (¤È restrict) ¤¬¤¢¤ê¤Þ¤·¤Æ¡¤¤½¤ì¤¾¤ì°ÕÌõ¤¹¤ë¤È¡ÖÊѲ½¤·¤Þ¤»¤ó¡×¡¤¡ÖºÇŬ²½¤·¤Ê¤¤¤Ç¤Í¡×(¤½¤·¤Æ¡Ö°ã¤¦¥¢¥É¥ì¥¹¤Ç¤¹¡×) ¤Ë¤Ê¤ê¤Þ¤¹¡¥¤³¤ì¤é¤Ï·¿¤½¤Î¤â¤Î¤È¥Ý¥¤¥ó¥¿·¿¤ÎξÊý¤òÊÌ¡¹¤Ë½¤¾þ¤Ç¤¤ë (restrict ¤Ï¥Ý¥¤¥ó¥¿·¿¤À¤ ...
¥É¥ì¥Ã¥·¥ó¥°¤Î¤è¤¦¤Ê ¡§ 2006-09-17¡¡22:35
Comment
¤½¤â¤½¤âstd::basic_string<utf8_t, my_char_traits<utf8_t>, my_allocator<utf8_t> >¤È¤¤¤¦»þÅÀ¤Ç¸«¤Å¤é¤¤¤Ç¤¹¡£
»ä¤Ê¤é¨ºÂ¤Ëtypedef¤·¤Þ¤¹¡£
typedef std::basic_string<utf8_t, my_char_traits<utf8_t>, my_allocator<utf8_t> > utf8string;
¤³¤¦¤¹¤ì¤Ðconst¤òÁ°¸å¤É¤Á¤é¤Ë¤ª¤¤¤Æ¤â¶Ëü¤Ë¸«°×¤µ¤¬ÊѤï¤ë¤È¤¤¤¦¤³¤È¤Ï̵¤¤¤Ï¤º¤Ç¤¹¡£
¤Á¤Ê¤ß¤Ë»ä¤Ï¸å¤í¤ËÃÖ¤¤¤¿¤Û¤¦¤¬Åý°ì´¶¤¬¤¢¤ë¤È»×¤¤¤Ä¤Ä¡¢´·½¬Åª¤ËÁ°¤ËÃÖ¤¤¤Æ¤¤¤Þ¤¹¡£
> »ä¤Ê¤é¨ºÂ¤Ëtypedef¤·¤Þ¤¹¡£
¤È¤³¤í¤¬¤½¤¦¤â¤¤¤«¤Ê¤¤¤Î¤Ç¤¹¡£
¤È¤¤¤¦¤Î¤Ï¡¢¤³¤¦¤¤¤¦Ä¹¤Ã¤¿¤é¤·¤¤Ì¾Á°¤òtypedef¤Ê¤·¤Ç»È¤¦¾ì¹ç¤È¤¤¤¦¤Î¤Ï¡¢ÂçÄñ¡¢¥Æ¥ó¥×¥ì¡¼¥È´Ø¿ô¤Î°ú¿ô¤äÊÖµÑÃͤη¿¤Ê¤ó¤«¤Ç¡¢¤½¤¦¤¤¤¦¤È¤¤Ë¤Ïtypedef¤¬»È¤¨¤Þ¤»¤ó¡£
Î㤨¤Ð¡¢
template <class charT, class traits, class Allocator>
int func(std::basic_string<charT, traits, Allocator> const& str)
{
...
}
¤Î¤è¤¦¤Ê¾ì¹ç¤Ç¡¢¤³¤ì¤À¤Ètypedef¤¬»È¤¨¤Ê¤¤¤ï¤±¤Ç¤¹¡£
µ»ö¤ÎÆâÍÆ¤¬¡¢traits¤âAllocator¤âÆÃÄꤷ¤Æ¤·¤Þ¤Ã¤Æ¤¤¤¿¤Î¤Ç¡¢Îã¤È¤·¤Æ¤Ï¤¢¤Þ¤ê¤è¤¯¤Ê¤«¤Ã¤¿¤«¤â¤·¤ì¤Þ¤»¤ó¡£
¤Þ¤º¤Ï¡Ê egtra ¤µ¤ó¤âµó¤²¤é¤ì¤Æ¤¤¤Þ¤¹¤¬¡ËÀë¸À¤Ë¤ª¤¤¤Æ¤Î°ì´ÓÀ¤¬¤¢¤ë¤È»×¤¤¤Þ¤¹¡£
¤¿¤È¤¨¤Ðʸ»úÎó¥ê¥Æ¥é¥ë¤Î¸ÇÄê¥Æ¡¼¥Ö¥ë¤òºî¤ë¾ì¹ç¡¢±¦¤ËÃÖ¤¯¥¹¥¿¥¤¥ë¤Ç¤Ï
> char const* const table[] = {...
¤È¤Ê¤ê¤Þ¤¹¤¬¡¢¤³¤ì¤òº¸¤ËÃÖ¤¯¥¹¥¿¥¤¥ë¤ËÊѤ¨¤ë¤È¤·¤Æ
> const char const* table[] = {
¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£°Ê²¼¤Î¤è¤¦¤Ë¤¹¤ì¤ÐÀµ¤·¤¤Àë¸À¤Ë¤Ê¤ê¤Þ¤¹¤¬
> const char* const table[] = {
¤Ê¤ó¤À¤«ÉÔÄà¹ç¤¤¤Ç¤¹¡£
¤½¤·¤Æ¡¢ const ¤òº¸¤ËÃÖ¤¯¿Í¤Ï¾åµ¤ÎÎã¤ÎÃæ¤Î£²ÈÖÌܤΠconst ¤Î°ÕÌ£¤òÀµ¤·¤¯Íý²ò¤·¤Æ¤¤¤Ê¤¤·¹¸þ¤¬¤¢¤ê¡¢
> const char* table[] = {
¤È¤¤¤¦Àë¸À¤ò¹Ô¤¤¤¬¤Á¤Ç¤¹¡£¤µ¤é¤Ë¡¢Àµ¤·¤¯Íý²ò¤·¤Æ¤¤¤Æ¤â˺¤ì¤ä¤¹¤¤·¹¸þ¤â¤¢¤ë¤È´¶¤¸¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤Ï¥Á¡¼¥×¤ÊÁȤ߹þ¤ß´Ä¶¤Ç¤Ï table ¤¬ ROM ¤ËºÜ¤ë¤« RAM ¤ò¾ÃÈñ¤¹¤ë¤«¤Î½ÅÂç¤Êʬ¤«¤ìÌܤˤʤê¤Þ¤¹¡£
¤Þ¤¿¡¢ OS ¤«¤éµ¯Æ°¤µ¤ì¤ë¥×¥í¥°¥é¥à¤Ç¤âÊ£¿ôµ¯Æ°¤µ¤ì¤¿¤È¤¤Ë¥á¥â¥ê¾å¤Î¥¤¥á¡¼¥¸¤ò¶¦Í¤Ç¤¤ë¤«¤É¤¦¤«¤Î°ã¤¤¤Ë¤Ê¤ê¤Þ¤¹¡£
> ¤½¤·¤Æ¡¢ const ¤òº¸¤ËÃÖ¤¯¿Í¤Ï¾åµ¤ÎÎã¤ÎÃæ¤Î£²ÈÖÌܤΠconst ¤Î°ÕÌ£¤òÀµ¤·¤¯Íý²ò¤·¤Æ¤¤¤Ê¤¤·¹¸þ¤¬¤¢¤ê¡¢
> > const char* table[] = {
> ¤È¤¤¤¦Àë¸À¤ò¹Ô¤¤¤¬¤Á¤Ç¤¹¡£¤µ¤é¤Ë¡¢Àµ¤·¤¯Íý²ò¤·¤Æ¤¤¤Æ¤â˺¤ì¤ä¤¹¤¤·¹¸þ¤â¤¢¤ë¤È´¶¤¸¤Æ¤¤¤Þ¤¹¡£
¤½¤¦¤Ç¤¹¤Í¡£³Î¤«¤Ë¡¢¤³¤ÎÊդΤ³¤È¤ò½½Ê¬Íý²ò¤Ç¤¤Æ¤¤¤Ê¤¤»öÎã¤Ï¤è¤¯¸«¤«¤±¤Þ¤¹¡£
static¤Ê¤É¤Îµ²±¥¯¥é¥¹»ØÄê»Ò¤ÏÀë¸ÀÁ´ÂΤˤ«¤«¤ë¤Î¤Ç¡¢
> static const char* table[] ={
¤À¤ÈÇÛÎó¤¬ÀÅŪ¤Ë³ÎÊݤµ¤ì¤Þ¤¹¤¬¡¢¤½¤ì¤«¤é¤ÎÎà¿ä¤¬Æ¯¤¤¤Æ¤¤¤ë¤Î¤«¤âÃΤì¤Þ¤»¤ó¡£
> ¤µ¤é¤Ë¡¢Àµ¤·¤¯Íý²ò¤·¤Æ¤¤¤Æ¤â˺¤ì¤ä¤¹¤¤·¹¸þ¤â¤¢¤ë¤È´¶¤¸¤Æ¤¤¤Þ¤¹¡£
˺¤ì¤ë¤È¤¤¤¦¤«¡¢¾Ç¤Ã¤Æ¤¤¤¿¤ê¡¢Èè¤ì¤Æ¤¤¤¿¤ê¤¹¤ë¤È¡¢¤Ä¤Þ¤é¤Ê¤¤¥ß¥¹¤òÈȤ¹¤³¤È¤Ï¤¢¤ê¤Þ¤¹¤Í¡£