-2
template <typename T>
MyFun(const T container)
{
    // I want to static_assert that all elements in T are equal to SomeType
}

これどうやってするの?私はその線に沿って何かを考えていますstatic_assert(std::is_same<T::type,SomeType>)が、もちろんそれはうまくいきません...

4

3 に答える 3

2

あなたが使用できる

 static_assert(std::is_same<typename T::value_type,SomeType>::value, "type in the container is different");
于 2013-10-15T05:12:33.470 に答える
1

普通の容器なら…

template <typename Container>
MyFun(const Constainer& container)
{
    static_assert(std::is_same<typename Container::value_type, SomeType>::value)
    // I want to static_assert that all elements in Container are equal to SomeType
}
于 2013-10-15T05:13:23.037 に答える
1

次のようなものが必要です

static_assert(std::is_same<typename T::value_type, SomeType>::value, 
              "It does not work");

保持する要素の型であると定義されたコンテナー型を想定value_typeします (標準ライブラリ コンテナーが行うように)。

std::is_sameおよびを参照してくださいstatic_assert

于 2013-10-15T05:13:33.023 に答える