草庐IT

any_iterator

全部标签

c++ - 错误 : out-of-line definition of 'test' does not match any declaration in 'B<dim>'

我有一个小问题让我很烦!!我不知道下面的代码似乎有什么问题。我应该能够实现从父类(superclass)继承的功能,不是吗?但我得到error:out-of-linedefinitionof'test'doesnotmatchanydeclarationin'B'templateclassA{public:virtualdoubletest()const;};templateclassB:publicA{};templatedoubleB::test()const{return0;}我在Mac上使用clang(AppleLLVM5.1版)。 最佳答案

c++ - std::filesystem::directory_iterator 链接器问题 (C++17)

这个问题在这里已经有了答案:LinkerrorsusingmembersinC++17(4个答案)关闭4年前。在尝试使用C++17标准中的std::filesystem::directory_iterator时,我的C++构建出现问题。代码如下:std::vectorIO::getDirectoryList(std::filesystem::path&dirPath){std::vectorfiles;for(auto&file:std::filesystem::directory_iterator(".")){files.push_back(file.path());}returnf

c++ - 特化 iterator_traits

我想专攻std::iterator_traits对于不具有通常的嵌套typedef(如value_type、difference_type等)的容器类模板的迭代器,我不应该修改其源代码。基本上我想做这样的事情:templatestructiterator_traits::iterator>{typedefTvalue_type;//etc.};除了这不起作用,因为编译器无法推断出T来自Container::iterator.有什么可行的方法可以达到同样的目的吗?例如:templateclassSomeContainerFromAThirdPartyLib{typedefTValueTy

C++ 标准 : Unexpected const_iterator in multiset

我最近遇到了一个奇怪的问题,在遍历多重集时,我得到的是const_iterator而不是预期的iterator。结果证明这对MSVC来说不是问题,但g++给了我一个错误:error:invalidinitializationofreferenceoftype'myPtr&'fromexpressionoftype'constboost::shared_ptr'相关代码:typedefstd::multisetmyList;myList_mystuff;voidtick(floatdt){for(myList::iteratori=_mystuff.begin();i!=_mystuff

C++ 模板 std::vector::iterator 错误

在C++中,我试图获得std::vector::iterator对于我的模板类。但是,当我编译它时,出现错误:errorC2146:syntaxerror:missing';'beforeidentifier'iterator',errorC4430:missingtypespecifier-intassumed.Note:C++doesnotsupportdefault-int.我也收到警告:warningC4346:'std::vector::iterator':dependentnameisnotatype:#includetemplateclassv1{typedefstd::

c++ - 可以安全地存储 list::iterator 供以后使用吗?

假设我有一个列表,其中没有添加或删除新节点。但是,节点可能会被打乱。保存一个迭代器,指向列表中的一个节点,并在以后任意时间访问它是否安全?编辑(后续问题):list::splice()的文档说它从参数列表中删除元素。这是否意味着如果我调用splice,使用相同的列表作为函数的参数,现有的迭代器将失效? 最佳答案 是的。迭代器进入列表的标准受赠者不会失效,除非他们指向(比喻地说)的项目从列表中删除。从这个页面:http://www.sgi.com/tech/stl/List.htmlListshavetheimportantprope

c++ - std::condition_variable_any 的 libc++ 实现

条件变量应该有关于notify()的单一顺序和unlock_sleep()(在wait()中使用的一个虚构的函数调用,其中互斥锁被解锁并且线程作为一个原子操作序列休眠)操作。使用任意可锁定器实现此目的std::condition_variable_any实现通常在内部使用另一个互斥体(以确保原子性和休眠)如果内部unlock_sleep()和notify()(notify_one()或notify_all())操作彼此之间不是原子的,您冒着一个线程解锁互斥锁、另一个线程发出信号然后原始线程进入休眠状态并且永远不会醒来的风险。我正在阅读std::condition_variable_an

c++ - boost::spirit::hold_any 是如何工作的?

Evidentlyhold_any的性能优于boost::any。它是如何做到这一点的?编辑:感谢Mat的评论,我找到了一个answerbyhkaiser关于hold_any在另一个问题,但它缺乏细节。欢迎提供更详细的答案。 最佳答案 我认为原因之一是因为boost::hold_any使用模板元编程方法,而boost::any使用继承方法。在内部,boost::spirit::hold_any使用void*存储“值”并使用另一个对象来跟踪数据类型信息:>>boost/spirit/home/support/detail/hold_a

c++ - 重载运算符 : const vs non-const return type : any difference of performance?

如果我们去维基百科article关于C++运算符,我们有一个例子:Addition:a+b->TT::operator+(constT&b)const;因此运算符返回类型为T的非常量。如果我们看这个guideline作者说返回类型应该是const以避免以下语法:(a+b)=c现在假设我不介意这种语法,并考虑a和b是大数组。从“纯”性能的角度来看,返回类型中缺少const关键字是否会阻止编译器的优化(g++和带有-O3的英特尔icpc)?如果答案是"is",为什么? 最佳答案 这是一个有趣的问题。在C++03中,没有更好的机会使用这两

c++ - std::any 由 std::exception_ptr

可能我不是第一个发现std::exception_ptr可用于实现any类型(性能考虑被搁置)的人,因为它是可能是C++中唯一可以容纳任何东西的类型。然而,谷歌搜索并没有在这方面带来任何结果。有人知道以下方法是否已在任何地方使用过吗?#include#includestructWrongTypeError:std::exception{};classAny{public:templatevoidset(Tt){try{throwt;}catch(...){m_contained=std::current_exception();}}templateTconst&get(){try{st