结构定义后的第二个范围

时间:2013-11-26 09:06:28

标签: c++11 syntax

我看了一下Eric Nieblers范围库https://github.com/ericniebler/range-v3/和那里(/include/range/v3/utility/concepts.hpp,第36行)我找到了表格的代码

constexpr struct valid_expr_t
{
    template<typename ...T>
    true_ operator()(T &&...) const;
} valid_expr {};

我对valid_expr之后的第二个范围/大括号感到困惑。整个结构的含义是什么?这甚至是结构定义吗? C ++ 98中似乎不允许使用语法。什么可以进入这些第二对括号?

1 个答案:

答案 0 :(得分:4)

这是C ++ 11 uniform initialization syntax,它只是初始化valid_expr对象。

就像在做

struct valid_expr_t
{
    template<typename ...T>
    true_ operator()(T &&...) const;
};

constexpr valid_expr_t valid_expr {};