読者です 読者をやめる 読者になる 読者になる

Opaque Typedef

C++

N1891: Progress toward Opaque Typedefs for C++0X - std-proposals


Opaque Typedef(不透明なtypedef)、いわゆるStrong TypedefはC++11では入りませんでしたが、この提案をC++1yに向けて復活させよう、ということで議論が進められています。
構文的なところでは現在、継承ライクな構文や、エイリアス宣言にexplicitやnewを加える構文が主に考えられています。
後ろにいくほど新しい。

// 継承ライクな構文
class Address using public std::string {
public:
};
// エイリアス宣言にexplicitを付ける
using A = int; // 新たな型を導入しない単なるtypedef
using explicit B = int; // intからの明示的型変換を許可する新たな型Bを作る

// もしくはexplicitを右辺に持ってくる?
using B = explicit int;
// エイリアス宣言にnew explicitを付ける
using new explicit B = int; // intからの明示的型変換を許可する新たな型Bを作る
using new C = int; // intからの暗黙的型変換を許可する新たな型Cを作る

// もしくはnew explicitを右辺に持ってくる?
using B = new explicit int;
using C = new int;