C++26: Concept and variable-template template-parameters -- Sandor Dargo
Last week, we discussed why we should sometimes use
remove_cvref_t
on our template parameters before applying concepts to them. We also saw that the solution is not super readable because we lose access to the terse, shorthand syntax.
C++26: Concept and variable-template template-parameters
by Sandor Dargo
From the article:
C++ already allows passing templates as template parameters, but only if they are class templates. A common reason for doing this is to allow higher-level abstractions. For instance, you may want to pass in a container template like
std::vector
, without specifying the type it contains.Jason Turner explains this well in C++ Weekly - Ep 368 - The Power of template-template Parameters: A Basic Guide, but here’s his example for quick reference:
template<template <typename Contained, typename Alloc = std::allocator<Contained>> typename ResultType> auto get_data() { ResultType<double> result; // ... return result; } int main() { auto data = get_data<std::vector>(); }