variadic-templates

    2热度

    1回答

    我有以下结构: template <class... Args> class some_class { public: some_class() = default; some_class(Args...) = delete; ~some_class() = default; }; template<> class some_class<void> {

    0热度

    4回答

    我试图在variadic模板中实现一个元函数(?),以便在编译时计算几个类型的最大值sizeof。 template<typename... Ts> struct MaxSizeof { static constexpr size_t value = 0; }; template<typename T, typename... Ts> struct MaxSizeof {

    2热度

    2回答

    我编写了以下字符串连接函数(join)以减少分配数量和构建最终字符串所花费的时间。我也想写一个易于使用的附加功能(如果可能的话,单线程)。 size_t str_size(const char *str) { return std::strlen(str); } size_t str_size(const std::string &str) { return str.si

    1热度

    1回答

    我从参数包中定义一个数组作为constexpr。然后我想将这个数组作为模板参数传递给另一个模板。但是,我得到一个外部链接错误。这里有什么问题?我认为一个constexpr可以很容易地作为模板参数转发。 // Example program #include <array> #include <iostream> #include <string> template <size_t X>

    1热度

    3回答

    我正试图在计算密集型应用程序中优化一个很低级别和广泛使用的函数。 比方说,我有以下类型: template<typename T, int N> class Elem {...}; 我想写一个可以被称为功能,如: template<typename T, int N> void func(const Elem<T, N> & ... /*N elements*/, Elem<T, N> &

    0热度

    1回答

    我试图找出一种方法来捕获一个可以由l和r值引用组成的可变数据包,并通过引用捕获l值来捕获r值,供以后使用(因此异步测试)。我尝试了以下操作: #include <iostream> #include <tuple> #include <future> template<typename... T> auto bar(T&&... values) { return [tup =

    0热度

    1回答

    我创建了一个日志功能,一方面需要能够解析任意数量的参数,但另一方面将总是通过__func__和这个(的调用对象)。 如果我使用只可变参数模板这样 template<typename... Args> void log_device_message_template(const class *object, char const *func, char const

    0热度

    2回答

    我有一个类可以根据单个大小参数进行模板化。我想要一个构造函数,它接受基于模板大小参数的可变金额std::array。所以如果课堂模板化为一个。它应该接受一个数组。如果模板两个应该接受两个等 这是我想出了,但显然它不工作: template<std::size_t V> class Test { public: /* Constructors. */ Test() {}

    1热度

    1回答

    我想用std::functions模板类来实现一个复合模式,其中每个复合类都处理其子元素的返回值。 所以图案类可能是这个样子: class AbstractClass { public: virtual void process() = 0; }; template<typename ReturnType> class PrimitiveClass : public A

    3热度

    2回答

    我会尽量简单解释我目前的问题。它可以很容易地解决,但我迄今发现的唯一解决方案并不能满足自己,也许你会向我表明解决方案需要的下一级间接性。 我在这里使用CRTP,即使这不是问题的关键。下面是一段代码,重现我的问题: template <typename T> class A { public: static void p() { T::p();