0
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"
        );
    }

如何使静态断言起作用?重要的是类型是一个整数列表。干杯。

4

1 回答 1

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()永远不会失败。

于 2013-09-09T00:54:42.867 回答