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>)
が、もちろんそれはうまくいきません...
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>)
が、もちろんそれはうまくいきません...
あなたが使用できる
static_assert(std::is_same<typename T::value_type,SomeType>::value, "type in the container is different");
普通の容器なら…
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
}
次のようなものが必要です
static_assert(std::is_same<typename T::value_type, SomeType>::value,
"It does not work");
保持する要素の型であると定義されたコンテナー型を想定value_type
します (標準ライブラリ コンテナーが行うように)。
std::is_same
およびを参照してくださいstatic_assert
。