相关疑难解决方法(0)

特定类型的可变参数模板

我想要一个简单接受无符号整数的可变参数模板.但是,我无法让以下工作.

struct Array
{
    template <typename... Sizes> // this works
    // template <unsigned... Sizes> -- this does not work (GCC 4.7.2)
    Array(Sizes... sizes)
    {
        // This causes narrowing conversion warning if signed int is supplied.
        unsigned args[] = { sizes... };
        // ...snipped...
    }
};

int main()
{
    Array arr(1, 1);
}
Run Code Online (Sandbox Code Playgroud)

任何帮助赞赏.

编辑:如果你想知道,我正在尝试使用可变参数模板来复制以下内容.

struct Array
{
    Array(unsigned size1) { ... }
    Array(unsigned size1, unsigned size2) { ... }
    Array(unsigned size1, unsigned size2, unsigned size3) { ... }
    // ... …
Run Code Online (Sandbox Code Playgroud)

c++ gcc variadic-templates c++11

17
推荐指数
3
解决办法
4677
查看次数

具有相等参数类型的可变参数模板函数

我想写一个模板函数,如下所示:

template <typename T>
void f( const T & ...args ) // <-- This doesn't work, unfortunately.
{
    std::array<T> arr = { args... };
    // and so forth.
}
Run Code Online (Sandbox Code Playgroud)

显然,C++不允许这样做,因为左侧需要一个模板参数包...args才能使用.我想要的是一个模板函数,其中所有参数类型都相同.有一个简单的方法吗?

c++ variadic-templates c++11

8
推荐指数
1
解决办法
358
查看次数

标签 统计

c++ ×2

c++11 ×2

variadic-templates ×2

gcc ×1