SlideShare a Scribd company logo
Boost.勉強会 #9 つくば ( 2012-05-26 )

C++ TIPS 4 CV修飾編
概要
 主に cppll ML でご紹介してきた tips をC++
  の仕様をより掘り下げた形でまとめ直し
  てみました。
 今回はcv修飾にフォーカスした内容です。



              C++ Tips Boost.勉強会 #9 つくば   2
概要
 cv修飾はC++のすばらしい機能のひとつで
 はあるのですが、細部は残念ところが
 多々あり、注意が必要なのでしっかり復
 習しておきましょう。



          C++ Tips Boost.勉強会 #9 つくば   3
C++ Tips

CV修飾
cv修飾ってなに?
 const 修飾と volatile 修飾を合わせて cv 修
 飾( cv-qualifiers )と呼ばれます。
  constexpr はcv 修飾とは関係ありません。ヤツ
   は 全然別物です。
  cv 修飾は型とメンバー関数に対して付けるこ
   とができます。
  元の型とは違う型と見なされ、オーバーロー
   ドの対象となります。
               C++ Tips Boost.勉強会 #9 つくば   5
const
 const 修飾されたオブジェクトはJIS 的には
  定値オブジェクトと呼ばれます。
 const は厳密には二段階の意味があります。
  一つ目は読み込み専用(readonly)であること。
  二つ目は不変(immutable)であること。



             C++ Tips Boost.勉強会 #9 つくば   6
const
 読み込み専用(readonly)であること。
  const なオブジェクトは書き換えられません。




            C++ Tips Boost.勉強会 #9 つくば   7
const
 不変(immutable)であること。
  生成時から const として作成されたオブジェク
   トは変更できません。
  この場合、コンパイラはコンパイル時にオブ
   ジェクトを作ってしまうことができます。ま
   た、そういうオブジェクトをconst_castなどで
   const外しを行い書き換えようとすると未定義
   動作となります。
             C++ Tips Boost.勉強会 #9 つくば   8
const
 const 参照あるいはconstなオブジェクトを
 指し示すポインタは、その指し示すオブ
 ジェクトはreadonlyであるがimmutableで
 あるとは限りません。



            C++ Tips Boost.勉強会 #9 つくば   9
const
 readonlyだがimmutableではない例:
   int a = 0;
   const int & b = a;
   printf("%dn", b); // 0
   a = 1;
   printf("%dn", b); // 1
   b = 2;             // NG

                  C++ Tips Boost.勉強会 #9 つくば   10
volatile
 volatile 修飾されたオブジェクトはJIS 的に
  は揮発性オブジェクトと呼ばれます。
 最適化の抑止を意味します。
  マルチスレッドプログラミングにおける諸問
   題の回避を行ってくれるわけではありません。
  メモリマップドI/Oなどを想定した機能であり、
   実の所それ意外はほぼ要無しです。
             C++ Tips Boost.勉強会 #9 つくば   11
文法
const int a = 0; // 前置
int const b = 0; // 後置
const volatile int e = 0; // const+volatile
volatile const int f = 0; // 順番は逆もOKで、意味は同じ。
const int const c = 0; // 重複はNG
const int volatile d = 0; // 重複しない前置+後置はOK
int * const g = 0; // ポインタに対する修飾は必ず後置
int * const * h = 0; // ポインタに対する修飾は必ず後置
const int * const * const i = 0; // ベース+各ポインタに対して


                     C++ Tips Boost.勉強会 #9 つくば   12
文法
const   int a = 0; // a は変更不可
const   int * b = &a; // *b は変更不可, b は変更可
const   int * const c = b; // c,*c は変更不可
const   int * const * const d = &c; // d,*d,**d は変更不可
int e   = 0; // e は変更可
int *   const f = &e; // f は変更不可, *f は変更可
int *   const * const g = &e; // g,*g は変更不可, **g は変更可
int *   const * h = &e; // *h は変更不可, h,**h は変更可



                         C++ Tips Boost.勉強会 #9 つくば      13
文法
// 引数に対するcv修飾に応じて
// 適切にオーバーロードが機能します。
void func(int & a);
void func(int const & a);
void func(int volatile & a);
void func(int const volatile & a);
void func(int && a);




                        C++ Tips Boost.勉強会 #9 つくば   14
文法
// 参照やポインタでない場合は関数シグネチャ的には無視される。
void func(int a);
void func(int const a); // 宣言的には void func(X a); と等価。

// 定義的には違いがある。
void func(int a) {
  a = 0; // OK
}
void func(int const a) {
  a = 0; // constなので書き換えはNG
}
                       C++ Tips Boost.勉強会 #9 つくば   15
文法
class X {
  public:
    void func();
    void func() const;
    void func() volatile;
    void func() const volatile;
    void func() &&;
    // 呼び出し時の this に対するcv修飾に応じて
    // 適切にオーバーロードが機能します。
};

                 C++ Tips Boost.勉強会 #9 つくば   16
文法
class X {
  public:
    X(const int a) const;
    ~X() const;
    // コンストラクタとデストラクタに対するcv修飾はNG
    // ( コンストラクタの引数型に対するcv修飾はOK )

     static void gunc() const;
     // 静的メンバー関数に対するcv修飾はNG
};

                    C++ Tips Boost.勉強会 #9 つくば   17
「よりcv修飾されている」
 cv修飾に関する文脈上「よりcv修飾されて
 いる(more cv-qualified)」という表現が現れ
 ることがありますが、これは規格上次の
 表のように定義されています。



             C++ Tips Boost.勉強会 #9 つくば   18
「よりcv修飾されている」
                 修飾の順序関係

    cv修飾なし           <          const

    cv修飾なし           <          volatile

    cv修飾なし           <          const volatile

        const        <          const volatile

      volatile       <          const volatile
                  C++ Tips Boost.勉強会 #9 つくば      19
const_cast
 cv修飾の状態のみを変換するキャストで
  す。
 名前は const_cast ですが、 volatile につい
  ても修飾を付けたり外したりできます。



               C++ Tips Boost.勉強会 #9 つくば   20
const_cast
 よりcv修飾されている型へは暗黙の型変
 換が行われる為、明示的にキャストする
 必要はありません。
  これは安全なキャストについては暗黙の型変
  換が行われるということであり、const_cast
  が必要になるという事は安全でないキャスト
  を行っているということであり、注意が必要
  です。
             C++ Tips Boost.勉強会 #9 つくば   21
const_cast
int a = 0;
const int * b = &a;
int * c = b;                    // NG
int * d = const_cast<int *>(b); // const を一つ除去
const int * * e = &d;           // NG(後述)
const int * * f = const_cast<const int * *>(&d);
                                // const を一つ付加※
const int * const * g = ...;
int * * h = const_cast<int * *>(g); // const を一つ除去



                        C++ Tips Boost.勉強会 #9 つくば    22
修飾の変換・互換ルール
 cv修飾の差異による型の変換・互換ルー
 ルは「よりcv修飾されている型へは暗黙
 の型変換が行われる」ということさえ頭
 に入れておけば後は概ね直感的に理解し
 やすいものなのですが、厳密にはやや変
 則的で落とし穴が無くもないのでひとつ
 ひとつ見ていきましょう!
         C++ Tips Boost.勉強会 #9 つくば   23
型の互換性:値型
int a = 0;
const int b = a; // コピー
int c = b;       // コピー

...値型の場合、cv修飾の状況の関わらずコピーされる。

※サンプルは代入ですが、関数の引数についてもルールは同じ。




                          C++ Tips Boost.勉強会 #9 つくば   24
型の互換性:参照型
int a   = 0;
const   int & b = a; // よりcv修飾されている型へはOK
int &   c = b;       // 逆方向はNG
int &   d = const_cast<int &>(b); // キャストすればOK




                         C++ Tips Boost.勉強会 #9 つくば   25
型の互換性:ポインター型
int a   = 0;
const   int * b = &a; // よりcv修飾されている型へはOK
int *   c = b;                    // 逆方向はNG
int *   d = const_cast<int *>(b); // キャストすればOK
int *   * e = &b;                 // NG
int *   * f = &d;                 // OK
const   int * * g = &b;           // OK
const   int * * h = &d;           // NG(後述)
int *   const * i = &b;           // NG
int *   const * j = &d;           // OK
const   int * const * k = &b;     // OK
const   int * const * l = &d;     // OK
                         C++ Tips Boost.勉強会 #9 つくば   26
直感的でない型の非互換性
 なぜ const int * * 型の値に int * *
 型の値を代入できないのか?

     int a = 0;
     int * b = &a;
     const int * * c = &b; // NG

               C++ Tips Boost.勉強会 #9 つくば   27
直感的でない型の非互換性
 ポインタ部分を除けば const int 型と
 int 型であり問題はない。

  int a = 0;
  const int b = a; // OK(コピー)

  int c = b; // 逆方向もOK(コピー)
             C++ Tips Boost.勉強会 #9 つくば   28
直感的でない型の非互換性
 ポインタがあっても一段の const int
 * 型と int   * 型であれば同じく問題は
 ない。
    int a   = 0;
    int *   b = &a;
    const   int * c = b; // OK
    int *   d = c;       // NG
                C++ Tips Boost.勉強会 #9 つくば   29
直感的でない型の非互換性
 しかし、 const int * * 型の値に int
 * * 型の値の代入はエラーになる。

     int a = 0;
     int * b = &a;
     const int * * c = &b; // NG

               C++ Tips Boost.勉強会 #9 つくば   30
直感的でない型の非互換性
 もしエラーにならないとしたら?

int a = 0;
int * b = &a;
const int * * c = &b; // 本当はエラー

             C++ Tips Boost.勉強会 #9 つくば   31
直感的でない型の非互換性
 もしエラーにならないとしたら?
int a = 0;
int * b = &a;
const int * * c = &b; // 本当はエラー
const int d = 0;
*c = &d;
*b = 1;

                 C++ Tips Boost.勉強会 #9 つくば   32
直感的でない型の非互換性
 もしエラーにならないとしたら?
int a = 0;
int * b = &a;
const int * * c = &b; // 本当はエラー
const int d = 0;
*c = &d; // *c も &d ともに const int * 型
*b = 1;

                  C++ Tips Boost.勉強会 #9 つくば   33
直感的でない型の非互換性
 もしエラーにならないとしたら?
int a = 0;
int * b = &a;
const int * * c = &b; // 本当はエラー
const int d = 0;
*c = &d; // *c も &d ともに const int * 型
*b = 1; // おかしくね? *b が指してんの d だよ!

               C++ Tips Boost.勉強会 #9 つくば   34
直感的でない型の非互換性
 const int * * 型の値に int * * 型の
 値の代入を許してしまうと結果として
 明示的にキャストを使ってもいないの
 にconst外しを許してしまうことになっ
 てしまう!
  とまぁ、そんなことにならないようにC++のコ
  ンパイラはエラーとして弾いてくれます。
              C++ Tips Boost.勉強会 #9 つくば   35
伝播性
 ある変数をcv修飾するとその変数を参照
 あるいはポインタ経由でアクセスする
 コードが全て同じくcv修飾されているこ
 とが要求されるようになります。



         C++ Tips Boost.勉強会 #9 つくば   36
伝播性
 オブジェクトがcv修飾されると同様な効
 果がそのデータメンバーとメンバー関数
 にも及びます。データメンバーについて
 はさらにそれらのデータメンバーのデー
 タメンバーにも伝播が連鎖します。


         C++ Tips Boost.勉強会 #9 つくば   37
伝播性
 最終的に末端部分で呼び出す外部から提
供されるライブラリの関数(API)が適切に
cv修飾されていない場合、必要に応じて
const_cast を使用してcv修飾を外すことに
なりますが、本当に外してもよいのか注
意する必要があります。

           C++ Tips Boost.勉強会 #9 つくば   38
mutable
 オブジェクトがconst修飾されている場合
 でもデータメンバーにmutableを指定する
 ことでconst修飾を伝播させないこともで
 きます。
  const修飾の伝播のみを無効化するもので、
  mutableが指定されていてもvolatile修飾は伝播
  します。
             C++ Tips Boost.勉強会 #9 つくば   39
mutable
 class X {
   public:
     mutable int a;
     int b;
     X() { }
 };

 const X x;
 x.a = 42; // mutableが効いているので代入可能
 x.b = 42; // constなのでNG

                      C++ Tips Boost.勉強会 #9 つくば   40
伝播性の抜け・・・
class X {                               const X x;
  public:                               //x.a = 42; これはさすがにNG
    int a;                              printf("%drn", x.a); // 0
    int * b;                            *x.b = 1; // これはまだしも・・・
    int & c;                            printf("%drn", x.a); // 1
    X() :a(0), b(&a), c(a) { }          x.c = 2; // しれっと代入可能・・・
};                                      printf("%drn", x.a); // 2




                                 C++ Tips Boost.勉強会 #9 つくば            41
伝播性の抜け・・・
 ほかにもコンストラクタおよびデストラ
  クタにはcv修飾がかからない為、コンス
  トラクタおよびデストラクタ内では本来
  *this がconstな状態であってもcv修飾がか
  かっていないものとして動作します。
 const修飾されているオブジェクトであっ
  ても delete で破棄できちゃったり・・・
            C++ Tips Boost.勉強会 #9 つくば   42
伝播性の抜け・・・
class X {                    const X x;
  public:
    int value;               const X * y = new X();
    X() {                    delete y;
        value = 0;
        func();
    }
    ~X() {
        value = 42;
        func();
    }
    void func();
};
                      C++ Tips Boost.勉強会 #9 つくば       43
一時オブジェクトの延命
 const且つ参照で受け取ることで一時オブ
  ジェクトをその受け取った側の変数と同
  じスコープで延命できます。
std::string func();

std::string name1 = func();              //   コピー
const std::string name2 = func();        //   コピー
const std::string & name3 = func();      //   一時オブジェクトの延命
std::string & name4 = func();            //   NG
                          C++ Tips Boost.勉強会 #9 つくば     44
volatileメンバー関数でロック
 ちょっとトリッキーなvolatile修飾の使い
 方として、スレッド間で共有して使われ
 ることがあるオブジェクトをvolatile修飾
 によってマークし、そのメンバー関数が
 呼び出される際にvolatile修飾されている
 場合にのみロックを行う手法があります。

           C++ Tips Boost.勉強会 #9 つくば   45
volatileメンバー関数でロック
class X {
  public:
    int func() { ... }
    int func() volatile {
        return auto_lock(), const_cast<X *>(this)->func();
    }
};

X a;
a.func(); // スレッド間共有しないインスタンスではロックせずに処理
volatile X b;
b.func(); //スレッド間共有するインスタンスではロックして処理

                              C++ Tips Boost.勉強会 #9 つくば      46
C++ Tips

質疑応答
C++ Tips

ご清聴ありがとうございました。

More Related Content

What's hot

C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプC++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
 
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core GuidelinesBoost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Shintarou Okada
 
templateとautoの型推論
templateとautoの型推論templateとautoの型推論
templateとautoの型推論
MITSUNARI Shigeo
 
Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4
Takashi Hoshino
 
君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らない君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らないdigitalghost
 
第1回勉強会スライド
第1回勉強会スライド第1回勉強会スライド
第1回勉強会スライド
koturn 0;
 
F#によるFunctional Programming入門
F#によるFunctional Programming入門F#によるFunctional Programming入門
F#によるFunctional Programming入門
bleis tift
 
第2回勉強会スライド
第2回勉強会スライド第2回勉強会スライド
第2回勉強会スライド
koturn 0;
 
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)
Akihiko Matuura
 
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門伸男 伊藤
 
知って得するC#
知って得するC#知って得するC#
知って得するC#Shota Baba
 
Better C#の脱却を目指して
Better C#の脱却を目指してBetter C#の脱却を目指して
Better C#の脱却を目指して
bleis tift
 
yieldとreturnの話
yieldとreturnの話yieldとreturnの話
yieldとreturnの話
bleis tift
 
C# 8.0 null許容参照型
C# 8.0 null許容参照型C# 8.0 null許容参照型
C# 8.0 null許容参照型
信之 岩永
 
モナドハンズオン前座
モナドハンズオン前座モナドハンズオン前座
モナドハンズオン前座
bleis tift
 
C++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みくださいC++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みくださいdigitalghost
 
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12
Keisuke Fukuda
 
Emcpp0506
Emcpp0506Emcpp0506
Emcpp0506
Takatoshi Kondo
 
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会Akihiko Matuura
 

What's hot (20)

C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプC++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
 
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core GuidelinesBoost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
 
templateとautoの型推論
templateとautoの型推論templateとautoの型推論
templateとautoの型推論
 
Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4
 
君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らない君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らない
 
第1回勉強会スライド
第1回勉強会スライド第1回勉強会スライド
第1回勉強会スライド
 
F#によるFunctional Programming入門
F#によるFunctional Programming入門F#によるFunctional Programming入門
F#によるFunctional Programming入門
 
第2回勉強会スライド
第2回勉強会スライド第2回勉強会スライド
第2回勉強会スライド
 
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)
 
C++11
C++11C++11
C++11
 
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
 
知って得するC#
知って得するC#知って得するC#
知って得するC#
 
Better C#の脱却を目指して
Better C#の脱却を目指してBetter C#の脱却を目指して
Better C#の脱却を目指して
 
yieldとreturnの話
yieldとreturnの話yieldとreturnの話
yieldとreturnの話
 
C# 8.0 null許容参照型
C# 8.0 null許容参照型C# 8.0 null許容参照型
C# 8.0 null許容参照型
 
モナドハンズオン前座
モナドハンズオン前座モナドハンズオン前座
モナドハンズオン前座
 
C++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みくださいC++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みください
 
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12
 
Emcpp0506
Emcpp0506Emcpp0506
Emcpp0506
 
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会
 

Viewers also liked

Boost.PropertyMap (.pptx)
Boost.PropertyMap (.pptx)Boost.PropertyMap (.pptx)
Boost.PropertyMap (.pptx)
Cryolite
 
Boost study meeting opening 4
Boost study meeting opening 4Boost study meeting opening 4
Boost study meeting opening 4
Akira Takahashi
 
ABC2015 Summer LT
ABC2015 Summer LTABC2015 Summer LT
ABC2015 Summer LT
Kensuke Onishi
 
The Earth is not flat; but it's not round either (Geography on Boost.Geometry)
The Earth is not flat; but it's not round either (Geography on Boost.Geometry)The Earth is not flat; but it's not round either (Geography on Boost.Geometry)
The Earth is not flat; but it's not round either (Geography on Boost.Geometry)
Vissarion Fisikopoulos
 
boost::shared_ptr tutorial
boost::shared_ptr tutorialboost::shared_ptr tutorial
boost::shared_ptr tutorial
NU_Pan
 
Boost勉強会 #10 ディスカッションまとめ
Boost勉強会 #10 ディスカッションまとめBoost勉強会 #10 ディスカッションまとめ
Boost勉強会 #10 ディスカッションまとめSigureya
 
ゲーム開発経営ゲーム
ゲーム開発経営ゲームゲーム開発経営ゲーム
ゲーム開発経営ゲーム
Yuki Miyatake
 
3DCAD@VDI活用とCADデータ管理のロードマップ
3DCAD@VDI活用とCADデータ管理のロードマップ3DCAD@VDI活用とCADデータ管理のロードマップ
3DCAD@VDI活用とCADデータ管理のロードマップ
Dell TechCenter Japan
 
Boost tour 1.60.0
Boost tour 1.60.0Boost tour 1.60.0
Boost tour 1.60.0
Akira Takahashi
 
3D CADと3Dプリンタ体験セミナー #1
3D CADと3Dプリンタ体験セミナー #13D CADと3Dプリンタ体験セミナー #1
3D CADと3Dプリンタ体験セミナー #1Kou Ouchi
 
Unity MeshとColliderについて
Unity MeshとColliderについてUnity MeshとColliderについて
Unity MeshとColliderについて
Self Norl
 
ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetup
Ryuichi Kubuki
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
Yuki Miyatake
 

Viewers also liked (20)

Boost.PropertyMap (.pptx)
Boost.PropertyMap (.pptx)Boost.PropertyMap (.pptx)
Boost.PropertyMap (.pptx)
 
Boost study meeting opening 4
Boost study meeting opening 4Boost study meeting opening 4
Boost study meeting opening 4
 
CG基礎3 メタリンク
CG基礎3 メタリンクCG基礎3 メタリンク
CG基礎3 メタリンク
 
ABC2015 Summer LT
ABC2015 Summer LTABC2015 Summer LT
ABC2015 Summer LT
 
The Earth is not flat; but it's not round either (Geography on Boost.Geometry)
The Earth is not flat; but it's not round either (Geography on Boost.Geometry)The Earth is not flat; but it's not round either (Geography on Boost.Geometry)
The Earth is not flat; but it's not round either (Geography on Boost.Geometry)
 
boost::shared_ptr tutorial
boost::shared_ptr tutorialboost::shared_ptr tutorial
boost::shared_ptr tutorial
 
boost - std - C#
boost - std - C#boost - std - C#
boost - std - C#
 
Boost勉強会 #10 ディスカッションまとめ
Boost勉強会 #10 ディスカッションまとめBoost勉強会 #10 ディスカッションまとめ
Boost勉強会 #10 ディスカッションまとめ
 
Glfw3,OpenGL,GUI
Glfw3,OpenGL,GUI Glfw3,OpenGL,GUI
Glfw3,OpenGL,GUI
 
boost and c++11
boost and c++11boost and c++11
boost and c++11
 
ゲーム開発経営ゲーム
ゲーム開発経営ゲームゲーム開発経営ゲーム
ゲーム開発経営ゲーム
 
3DCAD@VDI活用とCADデータ管理のロードマップ
3DCAD@VDI活用とCADデータ管理のロードマップ3DCAD@VDI活用とCADデータ管理のロードマップ
3DCAD@VDI活用とCADデータ管理のロードマップ
 
Boost Tour 1_58_0 merge
Boost Tour 1_58_0 mergeBoost Tour 1_58_0 merge
Boost Tour 1_58_0 merge
 
Boost container feature
Boost container featureBoost container feature
Boost container feature
 
Boost tour 1.60.0
Boost tour 1.60.0Boost tour 1.60.0
Boost tour 1.60.0
 
3D CADと3Dプリンタ体験セミナー #1
3D CADと3Dプリンタ体験セミナー #13D CADと3Dプリンタ体験セミナー #1
3D CADと3Dプリンタ体験セミナー #1
 
Unity MeshとColliderについて
Unity MeshとColliderについてUnity MeshとColliderについて
Unity MeshとColliderについて
 
Boost apps ver1.0
Boost apps ver1.0Boost apps ver1.0
Boost apps ver1.0
 
ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetup
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
 

Similar to C++ tips4 cv修飾編

.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
信之 岩永
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由kikairoya
 
すごいConstたのしく使おう!
すごいConstたのしく使おう!すごいConstたのしく使おう!
すごいConstたのしく使おう!
Akihiro Nishimura
 
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
TATSUYA HAYAMIZU
 
Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)
Yuto Takei
 
クロージャデザインパターン
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターン
Moriharu Ohzu
 
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
Shiqiao Du
 
Boost.Flyweight
Boost.FlyweightBoost.Flyweight
Boost.Flyweightgintenlabo
 
Define and expansion of cpp macro
Define and expansion of cpp macroDefine and expansion of cpp macro
Define and expansion of cpp macrodigitalghost
 
C++14言語編
C++14言語編C++14言語編
C++14言語編
Mitsuru Kariya
 
Emcpp item31
Emcpp item31Emcpp item31
Emcpp item31
mitsutaka_takeda
 
C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0
信之 岩永
 
言語処理系入門€10
言語処理系入門€10言語処理系入門€10
言語処理系入門€10
Kenta Hattori
 
Hupc 1
Hupc 1Hupc 1
C++ lecture-0
C++ lecture-0C++ lecture-0
C++ lecture-0sunaemon
 
C++0x in programming competition
C++0x in programming competitionC++0x in programming competition
C++0x in programming competition
yak1ex
 
C++0x 言語の未来を語る
C++0x 言語の未来を語るC++0x 言語の未来を語る
C++0x 言語の未来を語る
Akira Takahashi
 

Similar to C++ tips4 cv修飾編 (20)

.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
 
すごいConstたのしく使おう!
すごいConstたのしく使おう!すごいConstたのしく使おう!
すごいConstたのしく使おう!
 
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
 
Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)
 
More C++11
More C++11More C++11
More C++11
 
クロージャデザインパターン
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターン
 
C++の復習
C++の復習C++の復習
C++の復習
 
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
 
Boost.Flyweight
Boost.FlyweightBoost.Flyweight
Boost.Flyweight
 
Define and expansion of cpp macro
Define and expansion of cpp macroDefine and expansion of cpp macro
Define and expansion of cpp macro
 
app-c.odp
app-c.odpapp-c.odp
app-c.odp
 
C++14言語編
C++14言語編C++14言語編
C++14言語編
 
Emcpp item31
Emcpp item31Emcpp item31
Emcpp item31
 
C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0
 
言語処理系入門€10
言語処理系入門€10言語処理系入門€10
言語処理系入門€10
 
Hupc 1
Hupc 1Hupc 1
Hupc 1
 
C++ lecture-0
C++ lecture-0C++ lecture-0
C++ lecture-0
 
C++0x in programming competition
C++0x in programming competitionC++0x in programming competition
C++0x in programming competition
 
C++0x 言語の未来を語る
C++0x 言語の未来を語るC++0x 言語の未来を語る
C++0x 言語の未来を語る
 

More from 道化師 堂華

Reflection with xamarin.forms
Reflection with xamarin.formsReflection with xamarin.forms
Reflection with xamarin.forms
道化師 堂華
 
独りガラパゴス開発
独りガラパゴス開発独りガラパゴス開発
独りガラパゴス開発
道化師 堂華
 
エラーハンドリングモデル考察
エラーハンドリングモデル考察エラーハンドリングモデル考察
エラーハンドリングモデル考察
道化師 堂華
 
C++プログラマの為のセキュリティ入門
C++プログラマの為のセキュリティ入門C++プログラマの為のセキュリティ入門
C++プログラマの為のセキュリティ入門
道化師 堂華
 
マスタリング バベル
マスタリング バベルマスタリング バベル
マスタリング バベル
道化師 堂華
 
並列プログラミング 入門!&おさらい!
並列プログラミング入門!&おさらい!並列プログラミング入門!&おさらい!
並列プログラミング 入門!&おさらい!
道化師 堂華
 
バグベアード入門
バグベアード入門バグベアード入門
バグベアード入門
道化師 堂華
 
LUCIFERの設計コンセプトと 導入予定の機能紹介
LUCIFERの設計コンセプトと 導入予定の機能紹介LUCIFERの設計コンセプトと 導入予定の機能紹介
LUCIFERの設計コンセプトと 導入予定の機能紹介
道化師 堂華
 

More from 道化師 堂華 (8)

Reflection with xamarin.forms
Reflection with xamarin.formsReflection with xamarin.forms
Reflection with xamarin.forms
 
独りガラパゴス開発
独りガラパゴス開発独りガラパゴス開発
独りガラパゴス開発
 
エラーハンドリングモデル考察
エラーハンドリングモデル考察エラーハンドリングモデル考察
エラーハンドリングモデル考察
 
C++プログラマの為のセキュリティ入門
C++プログラマの為のセキュリティ入門C++プログラマの為のセキュリティ入門
C++プログラマの為のセキュリティ入門
 
マスタリング バベル
マスタリング バベルマスタリング バベル
マスタリング バベル
 
並列プログラミング 入門!&おさらい!
並列プログラミング入門!&おさらい!並列プログラミング入門!&おさらい!
並列プログラミング 入門!&おさらい!
 
バグベアード入門
バグベアード入門バグベアード入門
バグベアード入門
 
LUCIFERの設計コンセプトと 導入予定の機能紹介
LUCIFERの設計コンセプトと 導入予定の機能紹介LUCIFERの設計コンセプトと 導入予定の機能紹介
LUCIFERの設計コンセプトと 導入予定の機能紹介
 

Recently uploaded

ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 

Recently uploaded (8)

ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 

C++ tips4 cv修飾編