다음의 무의미한 예제는 컴파일되지 않지만 변수 템플릿을 템플릿 템플릿 인수로 전달하는 다른 방법이 있습니까?
template<typename T>
constexpr auto zero = T{0};
template<typename T, template<typename> auto VariableTemplate>
constexpr auto add_one()
{
return VariableTemplate<T> + T{1};
}
int main()
{
return add_one<int, zero>();
}
답변
짧은 대답 : 아니요.
긴 대답 : 예 클래스 템플릿을 통해 간접적 인 것을 사용할 수 있습니다.
template<typename T>
constexpr auto zero = T{0};
template<typename T>
struct zero_global {
static constexpr auto value = zero<T>;
};
template<typename T, template<typename> class VariableTemplate>
constexpr auto add_one()
{
return VariableTemplate<T>::value + T{1};
}
int main()
{
return add_one<int, zero_global>();
}