小编use*_*548的帖子

转发参数时我应该使用()还是{}?

我有以下课程:

struct foo
{
    std::size_t _size;
    int* data;
public:
    explicit foo(std::size_t s) : _size(s) { }
    foo(std::size_t s, int v)
        : _size(s)
    {
        data = new int[_size];
        std::fill(&data[0], &data[0] + _size, v);
    }

    foo(std::initializer_list<int> d)
        : _size(d.size())
    {
        data = new int[_size];
        std::copy(d.begin(), d.end(), &data[0]);
    }

    ~foo() { delete[] data; }

    std::size_t size() const { return _size; }
};
Run Code Online (Sandbox Code Playgroud)

我想像这样向它转发论据:

template <typename... Args>
auto forward_args(Args&&... args)
{
    return foo{std::forward<Args>(args)...}.size();
    //--------^---------------------------^
}

std::cout << forward_args(1, 2) << " " << forward_args(1) …
Run Code Online (Sandbox Code Playgroud)

c++ uniform-initialization c++11

14
推荐指数
1
解决办法
249
查看次数

标签 统计

c++ ×1

c++11 ×1

uniform-initialization ×1