带有附加可选模板参数的标准库容器?

Joh*_*itb 25 c++ parameters standards templates stl

在文章中多次阅读索赔 - 我想将此问题添加到Stackoverflow,并询问社区 - 以下代码是否可移植?

template<template<typename T, typename Alloc> class C>
void f() {
  /* some code goes here ... */
}

int main() {
  f<std::vector>();
}
Run Code Online (Sandbox Code Playgroud)

供应的实施是否std::vector真的允许有两个众所周知的额外的,默认的模板参数?这会使上面的代码格式错误,因为它假设有两个模板参数.见最后一段在这篇文章中对这种要求的一个例子.

Joh*_*itb 23

我发现了以下问题的报告,它说

没有含糊之处; 标准清晰如写.不允许库实现者将模板参数添加到标准库类.这不属于"似乎"规则,因此仅当标准为实现者提供明确许可时才允许这样做.这需要改变标准.

LWG决定不进行此更改,因为它会破坏涉及模板模板参数或标准库类模板特化的用户代码.

说实现可能添加其他可选参数的书籍和人员似乎是错误的.