17得票2回答
如何为嵌套模板类提供扣除指南?

根据[temp.deduct.guide/3]: (...) 在与对应的类模板相同的作用域内声明一个引导式推断,并且对于成员类模板,访问权限也相同。 (...) 但是下面的例子在[gcc]和[clang]中似乎都无法编译。 #include <string> templ...

17得票1回答
g++未采用可变参数模板的推导指南,clang++采用了 - 谁是正确的?

考虑以下代码:template <typename... Types> struct list { template <typename... Args> list(Args...) { static_assert(sizeof...

17得票1回答
在不可推导的上下文中模板参数推导的解决方法

考虑以下代码:#include <iostream> template<class T> struct outer { struct inner {}; }; template<class T> std::ostream& operato...

17得票1回答
g++ 和 clang++ 对于推断可变参数模板中的 `auto` 值的行为有所不同

又是一次关于"g++和clang++谁更正确"的讨论。 这一次我相信是g++的一个bug,但我想从标准大师那里确认一下。 下面是给定的代码:template <template <auto...> class Cnt, typename ... Typ...

16得票1回答
扣除指南、模板和子对象:哪个编译器是正确的?

Consider the following snippet: struct S { S() {} template<typename B> struct T { T(B &&) {} }; templa...

15得票1回答
为什么在使用转换操作符时编译器无法推导模板参数?

请看以下代码: #include <utility> template<typename T> struct wrapper { T value; }; struct foo { operator wrapper<int>() { ...

15得票1回答
C++中的部分模板函数规范是如何工作的?

我正在尝试确定模板函数的部分指定是否是C++标准的一部分,还是这仅仅属于编译器特定的功能。 所谓部分指定,指的是仅指定编译器无法推导出来的类型。例如,如果我有一个接受3种类型的模板函数"f",并且其中一个用在参数中可以被推导出来,那么我可以使用以下形式调用"f": f<type, ty...

15得票2回答
构造函数中的完美转发(C++17)

考虑以下代码: struct A { A(int id) : id_ { id } {} A(const A& rhs) { std::cout << "cctor from " + std::to_string(rhs.id_) &lt...

15得票2回答
函数模板参数推导指南?

我正在尝试编写一些模板函数,可以接受std::basic_string或char数组,从中构建出basic_string。我的当前解决方案是:#include <string> template<typename CharT> void foo(std::basic_...

14得票1回答
类模板参数推导和默认模板参数

下面经过简化的代码在最新版本的clang++5中无法工作,但被g++7接受: template<typename Wrapped, typename U> struct wrapper; template<typename Wrapped, typename U=int&...