草庐IT

any_cast

全部标签

c++ - 实现自定义(字符串)流时的 Xcode 4.5.2 libc++ std::bad_cast

我在使用char16_t作为char类型实现我自己的自定义stringbuf和stringstream时遇到问题。作为测试,我使用了一个nullstringbuf和nullstringstream,它们是我在一本旧的、可能已经过时的C++手册中找到的。这个nullstringstream充当“/dev/null”并且是一个简单的实现。当我使用时,这个简单的nullstream正在工作但是当我使用时失败并出现std::bad_cast异常.我知道必须有一个char_traits可用,但libc++似乎有它。classnullstringbuf:publicstd::basic_strin

c++ - 检查类型是否可以作为 boost::lexical_cast<string> 的参数

我有以下特征类(IsLexCastable)来检查是否可以通过调用boost::lexical_cast将类型转换为字符串.它错误地返回true对于vector.#include#include#include#include#include#includeusingnamespacestd;usingnamespaceboost;namespacestd{///AddingtostdsincethesearegoingtobepartofitinC++14.templateusingenable_if_t=typenamestd::enable_if::type;}templates

c++ - Boost any_range 与 "canonical form"- 后者是什么?

Boost的any_range文档说明如下:Despitetheunderlyingany_iteratorbeingthefastestavailableimplementation,theperformanceoverheadofany_rangeisstillappreciableduetothecostofvirtualfunctioncallsrequiredtoimplementincrement,decrement,advance,equaletc.Frequentlyabetterdesignchoiceistoconverttoacanonicalform.作者所说的

c++ - 如何使用对对象的引用来初始化 boost::any?

我想在boost::any中存储对对象的引用目的。如何初始化boost::any对象?我试过std::ref(),但是boost::any使用std::reference_wrapper初始化.比如下面的#include#include#includeintmain(void){ints;inti=0;boost::anyx(std::ref(i));std::cout打印std::reference_wrapper我想要boost::any包含int&相反。 最佳答案 boost::any类没有允许这样的接口(interface)

c++ - 执行 identity boost::lexical_cast 有什么开销?

给定一个函数,例如:templatevoidfunction1(constT&t){function2(boost::lexical_cast(t));}如果传递给function1的类型已经是std::string,会产生什么样的开销?开销是否会根据我要lexical_cast-ing的类型而有所不同?做一个重载函数来绕过强制转换是多余的吗?例如:voidfunction1(conststd::string&t){function2(t);}templatevoidfunction1(constT&t){function1(boost::lexical_cast(t));}boost

c++ - 在 std 命名空间 : any guarantees? 中定义的友好类

这个问题在我回答thisquestion时出现了:标准是否允许并保证关于friend-ing标准库类和/或函数?在这种特殊情况下,问题是:classMyUserDefinedType{friendstructstd::default_delete;private:~MyUserDefinedType(){}}保证允许MyUserDefinedType存储在std::unique_ptr中或std::shared_ptr具有默认删除器的对象。一般来说,标准库中描述的类是否需要直接实现它们的功能,或者它们可以使用任意级别的间接?例如,是否有可能std::default_delete实际上是

c++ - 为什么 std::function<boost::any ()> 在这种情况下不起作用?

我遇到过需要这种功能的情况:MoveOnlycreateMoveOnly();存储在这里:std::functionfactory=&createMoveOnly;据我所知,这应该可行,因为MoveOnly可以转换为boost::any使用支持boost.any移动语义的boost1.55,它不起作用。它会触发有关尝试在boost::any的持有者内部为MoveOnly使用已删除的复制构造函数的错误。但是正确选择了Boost.Any的顶级构造函数(它使用模板化的ValueType&&来转发参数)。也许问题出在std::function中。有什么提示吗? 最佳

c++ - boost::any 类型更改导致非法访问

在通过boostcpp库一书测试示例时,我注意到更改存储在boost::any变量中的类型可能会导致非法访问而不是异常:好:boost::anya=1;bool*p=boost::any_cast(&a);//ok,badcastexception不好:boost::anya=std::string{"Boost"};a=1;bool*p=boost::any_cast(&a);//noexceptionthrownstd::cout因此,我的问题是:这是一个看起来的错误,还是我不知道的与模板使用相关的一些潜在事实? 最佳答案 我明

c++ - 无法迭代 Poco::Any 的 std::map

我有一个Poco::Any的std::map,我正在尝试对其进行迭代并输出到流中,但出现编译器错误。我的代码如下:map::const_iteratorit;map::const_iteratorend=_map.end();map::const_iteratorbegin=_map.begin();for(it=begin;it!=end;++it){conststd::type_info&type=it->second.type();//compileerrorhere:osfirst(it->second)该行有2个错误:'type'cannotappearinaconstant

c++ - 计时代码 "C2440: ' <function-style-cast >' : cannot convert from ' _CR' to 'std::chrono::milliseconds' 中的一个奇怪错误

我偶然发现了一个奇怪的错误C2440:'':cannotconvertfrom'_CR'to'std::chrono::milliseconds'基本上相当于HowardHinnant'sanotherquestion中的代码.这应该在VisualStudio2012RC上编译吗?这个问题的原因是什么?修复或解决方法如何?我的目标只是创建一个简单的计时器(没什么太严肃的),所以如果存在这种效果,将采取点-以及其他实现线索。问题代码如下。用法:timers::stopwatchw;w.start();std::cout并且头文件是(为简洁起见省略了实现)namespacetimers{c