CRTP、可変個引数テンプレート、メタプログラミング、および演算子のオーバーロードが混在するクラスで、静的アサーションを行うために 2 つの可変個引数 unsigned int テンプレート パラメーターを比較したいと思います。これを行うにはヘルパー構造体が良い方法だと思いますが、正確な方法はわかりません。私は次のような形について考えます:
template<unsigned int... TDIM, unsigned int... TDIM0> struct HelperCheckDimensions
{
static const bool ok = /* SOMETHING */
};
ここでTDIM
、 とTDIM0
は、比較したい 2 つのパラメーターです。次のように入力できます。
static_assert(HelperCheckDimensions<TDIM..., TDIM0...>::ok, "ERROR : Dimensions are different !");
sizeof...(TDIM)==sizeof...(TDIM0)
ANDの場合にのみ、結果が true になるようにしますTDIM[0] == TDIM0[0], TDIM[1] == TDIM0[1], ..., TDIM[n] == TDIM0[n]
。
どうやってするか ?
どうもありがとうございました。