14得票3回答
模板推导指南能调用constexpr函数吗?

我有自己的固定大小数组类型,我希望它能够从std :: initializer_list中构建constexpr,而无需显式定义大小模板参数。我认为我可以使用模板推导指南,但看起来它没有将std :: initializer_list :: size()视为constexpr函数。以下是尝试为...

13得票3回答
从std::function的调用签名中推断模板参数

考虑这个模板函数:template<typename ReturnT> ReturnT foo(const std::function<ReturnT ()>& fun) { return fun(); } 为什么编译器无法从传递的调用签名中推断出Ret...

13得票2回答
为什么复制扣除候选人需要作为单独的扣除指南?

template <typename T> struct A { A(T); A(const A&); }; int main() { A x(42); // #1 A y = x; // #2 } 据我理解,对于#1中的T,将使用从第...

13得票2回答
为什么指向成员函数的指针的模板参数推导会失败?

使用g++ 5.4,这个 struct B { void f() {} }; struct D : public B { void g() {} }; template <class T> void foo(void (T::*)(), void (T::*...

13得票1回答
非类型模板参数推导中的类型冲突问题

#include<type_traits> template <typename T, T> struct A { }; template <typename T, T t> void f(A<T, t>) { } int main() {...

13得票2回答
类模板的嵌套模板参数推导不起作用。

在这个问答中,我编写了一个小封装类,为范围提供反向迭代器访问,并依赖于C++1z语言特性模板参数推导的类模板(p0091r3, p0512r0)。#include <iostream> #include <iterator> #include <vector&gt...

12得票5回答
无法推断模板类型

我正在尝试将一个迭代器作为模板参数传递给一个模板方法,但编译器报错: error C2783: 'void Test::Assert(std::vector<T>::const_iterator)': could not deduce template argument for ...

12得票1回答
g++和clang++在指向可变模板函数的指针方面表现不同

对于 C++ 标准大师们来说,“g++ 和 clang++ 谁更好”的问题又来了。 以下是代码:template <typename ...> struct bar { }; template <typename ... Ts> void foo (bar<...

12得票2回答
SFINAE和重载函数的地址

我正在尝试解析另一个函数参数(foo1/foo2)的上下文中重载函数(bar)的地址。 struct Baz {}; int bar() { return 0; } float bar(int) { return 0.0f; } void bar(Baz *) {} void foo1(...

12得票1回答
用户定义的以模板模板参数作为指导模板的推导指南是否符合标准?

背景 昨天我问了一个关于在模板模板参数的情况下,保证推导指南的使用的问题。当巴里改变他的答案为确认代码标准性时,我非常惊讶。我的惊讶实际上并不是来自于推导指南可以应用于模板模板参数,而更多是来自于标准部分符合此一致性,即[temp.param]/3: 其标识符不遵循省略号的类型参数将其标...