SlideShare une entreprise Scribd logo
1  sur  48
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

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

Contenu connexe

Tendances

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 GuidelinesShintarou 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,4Takashi 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 12Keisuke Fukuda
 
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会Akihiko Matuura
 

Tendances (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 の紹介@社内勉強会
 

En vedette

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 4Akira Takahashi
 
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 tutorialNU_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
 
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' MeetupRyuichi Kubuki
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかYuki Miyatake
 

En vedette (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で可読性を求めるのは間違っているだろうか
 

Similaire à 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
わんくま同盟大阪勉強会#61TATSUYA 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
 
言語処理系入門€10
言語処理系入門€10言語処理系入門€10
言語処理系入門€10Kenta Hattori
 
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 competitionyak1ex
 
C++0x 言語の未来を語る
C++0x 言語の未来を語るC++0x 言語の未来を語る
C++0x 言語の未来を語るAkira Takahashi
 

Similaire à 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 言語の未来を語る
 

Plus de 道化師 堂華

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

Plus de 道化師 堂華 (8)

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

Dernier

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 

Dernier (8)

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 

C++ tips4 cv修飾編