Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何为特定于类的typedef(c+;+;17)启用自动类型推断?_C++_Templates_C++17 - Fatal编程技术网

C++ 如何为特定于类的typedef(c+;+;17)启用自动类型推断?

C++ 如何为特定于类的typedef(c+;+;17)启用自动类型推断?,c++,templates,c++17,C++,Templates,C++17,我想用c++17自动推导一个类(带有默认模板参数)typedef。有人知道这是否可能吗?下面的代码试图说明这一点: #包括 模板 结构A{ 使用Vec=std::vector; }; int main(){ A {};/ /与C++ 17一起工作 A::Vec vec2{};//有效 答:VEC VEC {};//似乎不与C++ 17一起工作。这有可能吗? } 在上面的代码中,a的实例化没有问题,根据默认情况,推断出的模板类型是int。但是,我必须传递参数类型才能使用typedefVec。如果

我想用c++17自动推导一个类(带有默认模板参数)typedef。有人知道这是否可能吗?下面的代码试图说明这一点:

#包括
模板
结构A{
使用Vec=std::vector;
};
int main(){
A {};/ /与C++ 17一起工作
A::Vec vec2{};//有效
答:VEC VEC {};//似乎不与C++ 17一起工作。这有可能吗?
}
在上面的代码中,
a
的实例化没有问题,根据默认情况,推断出的模板类型是
int
。但是,我必须传递参数类型才能使用typedef
Vec
。如果有人知道以下两个问题的答案,我将不胜感激:

  • ISO邮件列表中允许自动推断A{}类型的功能的纸张编号/标题是什么?我很想了解更多有关此功能的信息
  • 是否可以在不明确指定
    A
    的模板类型的情况下自动推断
    Vec
    的类型
我很感激任何提示或建议

是否可以自动推断Vec的类型,而不显式指定Vec的模板类型

是的:

A::Vec
是否可以自动推断Vec的类型,而不显式指定Vec的模板类型

对。您可以将
保留为空:

A<>::Vec vec{};
A::Vec-Vec{};
否则,不带
等的
A
将使用未知模板类型参数命名模板,您不能使用该参数访问嵌套标识符

ISO邮件列表中允许A{}自动类型推断功能的纸张编号/标题是什么?我很想了解更多有关此功能的信息


是关于类模板参数推导(“CTAD”)的主要论文。是cpprefernece上的页面。请注意,
A::Vec Vec{}
不依赖CTAD,因为没有涉及执行实际推断的CONSTRUCTOR。

我认为这是OP想要的,但不是推断或推断,而是默认的
int
谢谢,@lubgr。我非常感谢您也找到了文件编号。
A<>::Vec vec{};