- 事情是这样的:我在项目中用到<any>和any_cast,在Windows和Android上编译都是没有问的,但到了iOS这边报错:
error: call to unavailable function 'any_cast': introduced in iOS 12.0 - 在网上搜到了https://stackoverflow.com/questions/44217316/how-do-i-use-stdoptional-in-c。其实是同样的问题:
optional.cpp:17:21: error: call to unavailable member function 'value': - 这些函数可能会抛出一个bad_xxx_access的异常。然后这个异常的what方法,不是实现在头文件里面的,而是实现在cpp里面的(iOS使用llvm):https://github.com/llvm-mirror/libcxx/blob/master/src/any.cpp
。相比之下,gcc的的实现是在头文件里面的:https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/std/any。 - 也就是说,iOS的bad_xxx_access异常是实现在libc++.dylib里面的。每个版本的iOS系统的libc++.dylib都是不一样的。在iOS 12.0及以上,才有实现bad_xxx_access::what函数。如果DEPLOYMENT_TARGET小于12.0的话,就会编译不通过。
-
解决方案:使用不会抛异常的版本
2019-05-28:Apple对C++<any><optional><variant>的支持性问题
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...