Мне нужна помощь здесь. Я новичок в метапрограммировании, поэтому я даже не знаю, где искать решение (которое пока не представляется возможным).Частичная специализация non type аргумент
template<typename T, void(*FuncPtr_A)(int), int(*FuncPtr_B)() = nullptr>
class DummyClass
{ };
template<typename T, int(*FuncPtr_B)()>
class DummyClass<T, nullptr, FuncPtr_B>
{ };
void FUNC_A(int) { }
int FUNC_B() { return 0; }
int main()
{
DummyClass <int, FUNC_A, FUNC_B> test1; // works
DummyClass <int, FUNC_A> test2; // works
DummyClass <int, FUNC_B> test3; // error: is there any way to make this work?
return 0;
}
Фабричные методы? – skypjack
Я уже знаю, как это сделать. Я новичок в мета-программировании, а не новичок на C++. Я просто хочу знать, возможно ли что-то, близкое к тому, что я пытаюсь сделать, или, по крайней мере, подтвердить, что это невозможно, и нет никакого способа обойти это. – James
Ваша специализация не специализируется на btw, что вы, кажется, хотите, это своего рода псевдоним. – Jarod42