问题标签 [ctad]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何使用模板构造函数定义推导指南?
为了简化我的问题,我将std::unique_lock
用作解释的工具。std::unique_lock 有一个模板参数,即互斥锁。但是,它的构造函数也是一个模板函数unique_lock(TMutex &, const chrono::duration<_Rep, _Period>&)
。
当一个人使用它时,可以写:
所以,问题是:如何为此写出演绎指南(不改变行为),怎么做?
到目前为止我最好的尝试:
不幸的是,clang 不接受这一点:
错误:模板特化或离线模板定义中的多余模板参数列表
c++ - C++20 中的 CTAD 和指定初始值设定项
我已经在这个问题中用指定的初始化程序对 CTAD 表示了混淆,但是我对非常相似的代码片段有另一个混淆
即使我没有在指定的初始化程序中给出明确的说明,演绎指南似乎first
也会将 的类型推断为。推导指南显然只关心初始化程序中的顺序,不管关键字 ( )。扣分指南应该聪明一点,还是应该有一个“指定扣减指南”?float
.first
.second
c++ - 使用大括号初始值设定项列表时模板参数推导失败
我正在尝试在“垂直()”函数中使用模板参数推导:
然而,这不会编译;铿锵声(带-std='c++17'
)说:candidate template ignored: couldn't infer template argument 'component' offset<component> perpendicular(offset<component> const &o) {
。
我应该辞职写作perpendicular(offset{1.0, 2.0})
还是有办法给编译器一个提示?
c++ - 有没有办法获得模板的别名并保留类模板参数推导?
我们还被迫使用宏吗?使用它们有很多缺点......
c++ - 以包装器指针作为函数参数的函数包装器的 CTAD 递归问题
我有一个模板类型等于函数返回类型的模板化函数包装器。此外,函数的第一个参数是指向包装器本身的指针。
我在这里尝试使用用户定义的推导指南,以避免指定模板类型,这样我就可以像使用它一样
但是由于递归,我不知道应该用什么替换以下指南中的问号。
ctad 在这里仍然可行吗,如果可以,怎么办?
c++ - 类模板参数推导(CTAD)应该在模块内工作吗?
给定以下模块
用clang编译:
clang++ -std=c++20 -stdlib=libc++ -fmodules -c -Xclang -emit-module-interface -o mod.pcm mod.cpp
以及以下应用程序代码:
编译:
clang++ -std=c++20 -stdlib=libc++ -fmodules -fimplicit-modules -fimplicit-module-maps -fprebuilt-module-path=. main.cpp
后者失败并显示以下错误消息:
当然,我可以更改模块代码并指定模板参数。但是,我想知道:
模块代码或编译器错误是否会出现这种行为?
c++ - 为什么 C++17 中 std::unique_ptr(new int()) 的 CTAD 失败?
为什么 C++17 类模板参数推导失败
std::unique_ptr(new int());
编译器可以想象它是什么而不是std::unique_ptr<int>
?
c++ - `std::make_optional` 的意义何在
std::make_
C++17 引入了Class 模板参数推导(除了make_unique
and make_shared
) ,使所有这些都变得多余。
那么有什么意义std::make_optional
呢?据我所知,它与std::optional
.
是否存在std::make_optional
优先于扣除指南的情况?