可以将变量模板作为模板模板参数传递吗?

时间:2019-10-28 14:00:31

标签: c++ templates c++14 template-templates variable-templates

以下荒谬的示例无法编译,但是还有其他方法可以将变量模板作为模板模板参数传递吗?

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>();
}

Try on Compiler Explorer

1 个答案:

答案 0 :(得分:3)

简短回答:否

长答案:是的,您可以通过类模板使用一些间接方式:

 Task.query()
                .column(1)
                .join('user', 'tasks.internalAssigneeId', 'user.id')
                .where(raw('projectId = projects.id'))
                .whereIn('user.externalId', assigneeIdIn),

Live example