型と初期値を操作するマクロがいくつかあります。初期値vIni
をにキャストする必要がありますvType
(vIni
は常に に変換可能でvType
、同じ型の場合もあります)。vIni
も空である可能性があり、その場合は初期化されてvType
いないか、デフォルトで初期化されている必要があります。結果はテンプレート化された関数に渡されます。
要するに、
template<typename T> void foo(const T& o);
foo(vType(vIni));
foo(vType());
コンパイルする必要があります。
私はすでにそれを発見したfoo(unsigned int())
かfoo(int*())
、コンパイルしないことを発見しましたが、typedef で回避できます。
失敗する他のケース (スペースとポインターを含む組み込み型以外) は何ですか?