Есть ли способ (в C ++ 17) добиться чего-то похожего на предварительное объявление в шаблоне?То, чего я хочу достичь, это что-то вроде этого:
template<typename T, SizeType D, typename SizeType = int>
Очевидно, что здесь D
зависит от SizeType
, поэтому оно должно предшествовать этому.Но в этом случае я не могу установить параметр по умолчанию, если D
также не имеет параметра по умолчанию (который я не хочу).По сути, я хочу иметь возможность «объявить» SizeType
перед D, но «определить» его после него.
Редактировать: Вот пример того, как я хотел бы использовать его:
template<typename T, SizeType D, typename SizeType = int>
class StaticArray{};
//...
StaticArray<float, 5> s; // = StaticArray<float, 5, int>
StaticArray<float, (1<<40), size_t>; // 1<<40 doesn't fit in int