30得票8回答
Boost::MPL的实际使用示例是什么?

可以分享一些Boost::MPL的实际应用案例吗(除了lambda),以便让我更好地了解它的目的和实际使用领域?MPL文档教程中有一个尺寸分析示例,但可能因为这是一个学术性的例子,它没有给我关于Boost::MPL以及何时可以有效使用的感觉。

25得票6回答
C++编译时将整数转换为字符串

我想做类似于这样的事情:template<int N> char* foo() { // return a compile-time string containing N, equivalent to doing // ostringstream ostr; // ...

24得票6回答
松耦合的隐式转换

隐式转换在类型语义上相等时非常有用。例如,想象一下两个库以不同的命名空间实现相同的类型,或者只是一个类型几乎相同,除了这里那里有些语义糖。现在,你不能将一个类型传递到设计为使用另一个类型的函数中(在其中一个库中),除非该函数是一个模板。如果不是,你必须以某种方式将一个类型转换为另一个类型。这应...

21得票6回答
如何在C++中显式实例化一个模板以适用于MPL向量的所有成员?

考虑以下头文件: // Foo.h class Foo { public: template <typename T> void read(T& value); }; 我希望在一个源文件中为所有包含在boost::mpl::v...

18得票6回答
是否可能在运行时迭代mpl::vector而不实例化向量中的类型?

通常情况下,我会使用boost::mpl::for_each<>()来遍历boost::mpl::vector,但这需要一个具有如下所示模板函数声明的函数对象: template<typename T> void operator()(T&){T::stati...

15得票3回答
使用boost::mpl生成类型列表的排列组合

我试图创建一个包含给定类型列表排列的列表。 下面的代码似乎可以运行,但是当我使用指定的列表而不是通过从实际输入中删除来生成新列表时,它没有产生预期的结果。这可以通过下面的permutation_helper和broken_helper之间的差异来证明。 有人知道为什么mpl::remove...

14得票1回答
C++14类型列表,“自由函数”和“方法”有偏好的原因吗?是选择哪一个还是反过来?

我看到在C++11/14中实现类型列表有两种可能的风格,我想知道是否有任何理由更喜欢其中一种。第一种技术在这里概述,并模仿了Boost的MPL库。在这种风格中,您定义元“自由函数”(顶级using声明),它们接受类型列表并对其进行操作。以下是如何在第一种风格中实现一个可以处理类型而不是值的me...

14得票1回答
通过缓存元函数来优化编译时性能

假设我有以下元函数:template <typename T> struct make_pair { using type = std::pair< typename std::remove_reference<T>::type, ...

13得票1回答
Boost MPL字符串

嗨,在boost mpl文档中,我发现了mpl::string和以下示例:typedef mpl::string<'hell','o wo','rld'> hello; 我有点惊讶,因为我认为在C或C++中,我们无法在字符'之间有多个字符? 这是正常而有效的吗?

12得票2回答
为什么Boost MPL有整数常量?

由于您可以将整数值作为模板参数并对其进行算术运算,那么boost::mpl::int_<>和其他整数常量的动机是什么?这个动机在C++11中是否仍然适用?