我如何static_assert将值解析为const&是正确的类型?

时间:2013-09-09 00:45:44

标签: c++ c++11

MyClass::MyClass(std::list<int> const& some_sequence)
    {
    static_assert(
        std::is_same<decltype(some_sequence),std::list<int>>::value ,
        "some_sequence should be an integer list"
        );
    }

如何使静态断言工作?重要的是类型是整数列表。 欢呼声。

1 个答案:

答案 0 :(得分:5)

无需使用static_assert(...):编译器将确保使用std::list<int>调用此函数。如果要编译上面的代码,则需要使用

MyClass::MyClass(std::list<int> const& some_sequence)
{
    static_assert(
        std::is_same<decltype(some_sequence),std::list<int> const&>::value ,
        "some_sequence should be an integer list"
    );
}

some_sequence被声明为std::list<int> const&,这是decltype(some_sequence)获得的类型。但是,static_assert()永远不会失败。