草庐IT

template-auto

全部标签

c++ - 嵌套模板特化结果为 "Illegal use of explicit template arguments"?

如何专门化嵌套模板?(请参阅下面的错误。)usingstd::reverse_iterator;templatereverse_iteratormake_reverse_iterator(constIt&it){returnreverse_iterator(it);}templateItmake_reverse_iterator>(constreverse_iterator&it){//Above^//errorC2768://'make_reverse_iterator':illegaluseofexplicittemplateargumentsreturnit.base();}

c++ - 在每个源文件中替代 "extern template"

我正在开发一个库,其中我们的许多核心对象都是模板,其中一个特定实例以指向该模板实例的智能指针的形式出现在项目的大多数文件中。我在单个源文件中明确实例化了这些模板。我们最近切换到C++11,我正在尝试使用新的externtemplateclassMyTemplate;加快编译速度。我的第一个问题是我是否在周围使用智能指针MyTemplate正在隐式实例化模板并要求文件顶部的“外部模板..”以避免重复实例化。我的第二个问题是是否有一些替代方法来添加所有这些externtemplateclassMyTemplate;到每个源文件。为我定义的每个模板搜索智能指针的每个实例并确保我在该文件中有正

C++ : Check if the template type is one of the variadic template types

这个问题在这里已经有了答案:Checkifatypeispassedinvariadictemplateparameterpack(3个答案)关闭7年前。假设我们有函数:templatevoidfoo(){...};检查“Kind”类型是否是C++(包括C++1z)中的“Kinds”类型之一的最简单方法是什么?

c++ - std::map.insert "could not deduce template argument for..."

我正在尝试熟悉STL库,但我无法理解我的编译错误。我使用编译器错误字符串“无法推断...的模板参数”搜索了其他问题,但没有一个答案似乎适用或相关。Error4errorC2784:'boolstd::operator&,conststd::unique_ptr&)':couldnotdeducetemplateargumentfor'conststd::unique_ptr&'from'conststd::string'c:\programfiles(x86)\microsoftvisualstudio10.0\vc\include\xfunctional125我正在编写一个简单的解释

c++ - `auto` 类成员上下文中的返回类型

如何对类成员使用自动类型推导?比如下面的代码structA{autofoo();//fooisdefinedinanotherfile};intmain(){Aa;a.foo();}其中foo的返回类型为auto会导致以下错误:error:function'foo'withdeducedreturntypecannotbeusedbeforeitisdefineda.foo();^错误是可以理解的,因为编译无法在不知道其定义的情况下知道foo的返回类型是什么。我的问题是,如果函数的声明和定义分离,是否有任何变通方法或某种编程模式可以规避自动返回类型不能用于类成员函数的问题。

c++ - 为什么我不能将 std::unique_ptr 用作 "template<class> class"参数?

这段代码:#includetemplateclassPtr>classA{Ptrints;};usingB=A;产生以下错误(使用GCC6.3):a.cpp:6:28:error:type/valuemismatchatargument1intemplateparameterlistfor‘templateclassPtr>classA’usingB=A;^a.cpp:6:28:note:expectedatemplateoftype‘templateclassPtr’,got‘templateclassstd::unique_ptr’现在,我可以像这样解决这个问题:templateu

C++:auto 关键字 & 范围for

目录auto关键字:起源:  auto的使用细则:auto不能推导的场景:范围for:范围for的使用条件: C++的空指针:注意: auto关键字:起源: 随着程序越来越复杂,程序中用到的类型也越来越复杂,经常体现在:类型难于拼写含义不明确导致容易出错例如:std::map::iterator于是就有了auto关键字,C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。简单来说,auto可以从获取的数值中推导出我们想要得到的类型。intmain(){inti=0;int

c++ - 代码审查问题——我应该允许将 auto_ptr 作为参数传递吗?

考虑我最近在我们的代码库中看到的以下示例代码:voidClassA::ExportAnimation(auto_ptranimation){...doessomething}//callingmethod:voidclassB::someMethod(){auto_ptranimation(newCAnimation(1,2));ClassAclassAInstance;classAInstance.ExportAnimation(animation)...dosomemorestuff}我不喜欢这样——我宁愿这样写:voidClassA::ExportAnimation(CAnima

c++ - MI 和隐式复制构造函数错误(原为 : Under what conditions can a template be the copy constructor?)

我很确定这个问题的答案是,“模板永远不可能成为复制构造函数。”不幸的是,我只花了3个小时弄清楚为什么我会收到有关递归的警告,跟踪它到复制构造函数,看着调试器发疯,不让我看递归代码,最后跟踪到一个基础构造函数中缺少“&”。你看,我有一个复杂的基于策略的设计主机,它已经运行了一段时间了。我着手将两个策略合二为一并遇到了一个递归复制构造函数。将其缩小为一个策略,该策略需要提供一个构造函数,该构造函数可以采用一种XXX概念作为其参数,但在这种情况下,我只是放弃它。所以我写了structmy_policy{templatemy_polity(Tconst){}//missing'&'...oop

c++ - template<>(<> 中没有任何类 T)是什么意思?

我正在阅读STL_construct.h中的一些源代码,在大多数情况下,它在中有某物我看到一些只有“template...”的行。这是什么? 最佳答案 这意味着接下来是一个templatespecialization. 关于c++-template(中没有任何类T)是什么意思?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/10682416/