12得票1回答
带有两个参数包的函数模板重载解析

考虑以下代码: #include<iostream> template<class..., class... T> int f(T...) { return 1; } template<class... T> int f(T...) { return ...

12得票1回答
当所有模板参数都被推导时,它们的顺序是否重要?

我遇到了Clang、GCC和MSVC之间的差异,其中GCC和Clang按照我的期望进行操作: #include <Eigen/Core> template <typename Indices, typename T, int Rows> //< Bad //t...

12得票1回答
在这里,“boost::mpl::identity<T>::type”的作用是什么?

我在查看Boost库中clamp函数的实现: template&lt;typename T, typename Pred&gt; T const &amp; clamp ( T const&amp; val, typename boost::mpl::identity&l...

12得票1回答
混合使用可变模板值和可变推导类型

以下内容是否完全符合标准?#include &lt;iostream&gt; template &lt;unsigned int... Values, class... Types&gt; void f(Types&amp;&amp;... values) { std::cout&l...

12得票2回答
C++17中的部分类模板参数推导

在下面的示例中,我们使用C++17的功能“类模板参数推导”来推断val的类型为Base&lt;int, double, bool&gt;。 template&lt;class T, class U, class V&gt; struct Base { Base(T, U) { }; ...

11得票2回答
模板参数可以是引用类型吗?

我开始学习C++,目前正在尝试使用模板,如果我的措辞不是100%准确,请谅解。 我正在使用以下资料: C++ Templates: The Complete Guide(第二版) Effective Modern C++:42种改进你对C++11和C++14的使用方法 第一本书介绍了...

11得票2回答
如何获取引用成员的指针?

考虑以下代码:struct AA { int&amp; rr; }; 有没有一种方法可以获取到指向AA::rr的指针(或者可能是引用),以便获取这个值?AA* aa; auto mm = &amp;AA::rr; // error: cannot create pointer to r...

11得票2回答
模板参数不明确:无法推断出模板参数

我正在编写一种类似于这样的封装器: #include &lt;iostream&gt; template&lt;class T, class Value&gt; void Apply(void (T::*cb)(Value), T* obj, Value v) { (obj-&gt...

11得票5回答
接受花括号初始化列表并推断长度的数组类

这个问题之前已经被问过了,但我很好奇在新的 C++ 标准中是否有任何变化。任何当前或未来的标准都可以接受。 问:是否有办法创建一个数组类,可以使用花括号初始化列表进行初始化,而不需要手动指定数组长度,并且元素存储在堆栈上,且不需要使用 'make_array' 函数呢? template&...

11得票2回答
函数类型参数的模板参数推导

考虑下面的程序。 #include &lt;iostream&gt; template &lt;typename T&gt; void f( void ( *fn )( T ) ) { fn( 42 ); } void g( int x ) { std::cout &lt...