c – 使用boost :: mpl :: bool_而不是const bool的优点

c – 使用boost :: mpl :: bool_而不是const bool的优点,第1张

概述我很困惑使用的优点 bool_<true> 和 bool_<false> 类型反对在模板元编程的上下文中简单地使用const bools. boost :: mpl库显然更喜欢第一种方法,并定义了类似于and_或or的帮助函数来帮助管理这样的bool_.条件元函数,如if_“取”bool_作为第一(模板)参数,但在幕后“调用”一个if_c metafunction希望一个(const)bool作为 我很困惑使用的优点
bool_<true>

bool_<false>

类型反对在模板元编程的上下文中简单地使用const bools.

boost :: mpl库显然更喜欢第一种方法,并定义了类似于and_或or的帮助函数来帮助管理这样的bool_.条件元函数,如if_“取”bool_作为第一(模板)参数,但在幕后“调用”一个if_c Metafunction希望一个(const)bool作为第一(模板)参数.

这个决定背后的论点是什么?

预先感谢您的帮助!

解决方法 这是一个简短的例子,我如何使用这些类型.这个例子是不可能的,使用const bool:
voID do_something(boost::mpl::bool_<true>){   ...}voID do_something(boost::mpl::bool_<false>){   ...}

根据参数的类型调用这两个函数之一:

template<class T>voID doIt(voID){   do_something(boost::mpl::bool_<boost::is_pointer<T>::val>())}

在这种情况下,将会调用第一个或第二个函数,这取决于类型T是否是指针的事实.这些类型允许您使用函数重载,在那里不可能使用const bool.使用const bool,您必须在运行时决定哪个分支.如果被调用的函数本身是模板,如果它们被实例化为非预期的类型,那么这种模板将无法正确编译,这一点尤为重要.上面的第一个函数定义可能包含只编译指针的代码.

总结

以上是内存溢出为你收集整理的c – 使用boost :: mpl :: bool_而不是const bool的优点全部内容,希望文章能够帮你解决c – 使用boost :: mpl :: bool_而不是const bool的优点所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1247754.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存