15

型の等価性をチェックするための自己完結型のコンパイル時関数 (引数のない関数テンプレートbool eqTypes<T,S>()) を実装する必要があります。

自己完結型とは、ライブラリに依存しないことを意味します。

私はこれらすべてが得意ではありません。それは私が試したものですが、必要なものではありません。

template<typename T>
bool eq_types(T const&, T const&) { 
return true;
}

template<typename T, typename U> 
bool eq_types(T const&, U const&) { 
return false; 
}
4

2 に答える 2

4

魔法のGCC拡張機能なしで、Cでそれを行う方法は次のとおりです。

#define CHECKED_TYPE(original_type, p) ((conversion_type*) (1 ? p : (original_type*) 0))

例えば:

void *q = CHECKED_TYPE(int, &y);

yではない場合、コンパイル エラーが発生しますint
説明については、こちらを参照してください。

于 2015-08-04T09:13:58.880 に答える