MetalとC++の違い
オーバーロード[編集 | ソースを編集]
MetalでもC++と同様に関数のオーバーロードは使用できる。ただしシェーダーのエントリーポイントとなる関数に関してはオーバーロードできない。
テンプレート[編集 | ソースを編集]
プリプロセッサ[編集 | ソースを編集]
制限事項[編集 | ソースを編集]
- ラムダ式
- dynamic_cast 演算子
- typeid 演算子
- new および delete 演算子
- noexcept 演算子
- goto 文
- register および thread_local 属性
- virtual 属性
- 派生クラス
- 例外処理
- C++の標準ライブラリ
- 代わりにMetalの標準ライブラリが用意されている。
- ポインタに若干の制限がある。
- エントリーポイントの引数はポインタで宣言する必要がある。
- device, constant, threadgroup, threadgroup_imageblockもポインタ。
- 関数ポインタはMetal 2.3から使える。それ以前のバージョンでは使えない。
- 再帰的関数呼び出しにも制限がある。
- Metal 2.4以降、かつコンピュートシェーダーのみ利用可能。
ざっと見た感じC++がベースである必要性がまったくないな。