_Generic
私はウィキペディアでこのC11の例を読んでいました:
#define cbrt(X) _Generic((X), long double: cbrtl, \
default: cbrt, \
float: cbrtf)(X)
パラメーターが 1 つしかない関数に使用する方法は明らかですが、このシステムで 2 つ (またはそれ以上) の汎用パラメーターを持つ関数を作成する方法がわかりません。どうしてそれが可能でしょうか?
コンパイラがこの機能をサポートしていれば、いくつか試してみたでしょうが、見つけることができなかったため、その方法についてのアイデアを見つけることができませんでした。