template-meta-programming

    1热度

    1回答

    我试图找到一种解决方法来使用C++ 03中的可变参数模板。 我想实现的是 - 在模板类中 - 实例化一个boost::tuple属性,该属性由每个单个类模板参数的向量组成。 这是它会是什么样子用C++ 11个可变参数模板: template<typename ...Parameters> class Foo { typedef std::tuple<std::vector<Param

    1热度

    1回答

    我想知道单元测试模板是否是一件事情。让我解释我的需求。 我有一个高度模板化的库。我有很多sfinae类型的特征,还有一些static_assert。 我想测试的是sfinae类型特征的有效性,并测试我的static_assert是否投掷正确的东西。知道我的报道会很棒。 这里有一个例子我的代码如下所示: template<typename T> using false_v = !std::is_s

    3热度

    1回答

    我试图创建一个可以存储向量元组的类。我有一个奇怪的编译错误,其起源我不明白。 代码: #include <iostream> #include <tuple> #include <vector> /// Suppose T is a pack of primitive types /// VectorTuple defines a tuple of vectors of these ty

    0热度

    2回答

    假设有一个Foo类,它使用F1,F2,F3函数定义其行为。有很少的客户会扩展Foo的行为并根据他们的需要进行定制。 对于这样的情况下它直截了当地实现它作为 class Foo { public: virtual void F1() { // default behavior } virtual void F2() { // default behavior } virtual void

    8热度

    1回答

    假设我有一个包装类型 template <typename T> struct X {/*..*/}; ,我不能只是X(X&&) = default,因为我必须做的不平凡的东西存在。 但是,我希望它是noexcept但只有在T(T&&)是noexcept的情况下。这可以用::std::is_nothrow_move_constructible进行测试。 我很茫然如何有条件地启用一个版本的构造

    3热度

    1回答

    我有许多C++结构与许多方法。 C++结构有一个 “默认”实例,我想公开一个使用 这个默认实例的“c”包装函数。但我也想避免重复所有的原型。 欢迎Alkind C++ 11/14/17和/或宏技巧,但我不想使用 代码生成器。 我有些东西几乎可以工作,但我仍然在努力处理几个 的细节。 // C++ class that have a "default-instance" //////////////

    0热度

    1回答

    在我的项目中,通过模板中定义找到一个元组的索引功能,通过我还是不明白它是如何工作: 似乎有一个递归,但我不知道它是如何终止权指数的想法? // retrieve the index (for std::get) of a tuple by type // usage: std::get<Analysis::type_index<0, Type, Types ...>::type::index>(

    6热度

    3回答

    我想实现一个C++模板元函数,确定是否可从方法输入参数调用类型。 即一个函数void foo(double, double)元函数会为callable_t<foo, int, int>(由于编译器做隐式转换)和false为别的返回true为callable_t<foo, double, double>,true如错误的参数个数callable_t<foo, double>。 我的尝试如下,但它失败

    1热度

    1回答

    如果我有一个包含N个大小相等的vectors的类。我将如何去实现一个标准的迭代器模板,它将在1到N个矢量之间迭代。我写了一个小例子来说明问题。 #include <bitset> #include <tuple> #include <type_traits> #include <vector> //Since std::get<>() for types isn't in c++11,

    1热度

    1回答

    给定一个融合序列X,我想创建一个新的融合序列Y,其实现将基于X.特别是,我想创建一个类模板make_fusion_conforming,以便 template <class X> struct another_fusion_sequence : make_fusion_conforming <X> {}; 将使another_fusion_sequence<X>熔融贴合,这样我可以调用 au