templateキーワードを複数行書くケース
sprout::tupleの実装などに見られる。ネストされたtemplate関数の実装を書く場合等に使う。あまり見かけないからか、解説されてない気がしたのでメモ程度に残しておきます。複数書く場合は、外側のテンプレートに対応するものから順番に書きます。
template <typename T1, typename T2> struct pair {}; template <typename... Types> struct tuple { template <typename T1, typename T2> tuple(pair<T1, T2>); }; template <typename... Types> // 複数書ける template <typename T1, typename T2> // 複数書ける tuple<Types...>::tuple(pair<T1, T2>) {}; int main() {}