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容器的基础元素?
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容器的基础元素?
你可以使用
static_assert(std::is_same<typename T::value_type,SomeType>::value, "type in the container is different");
几乎正确。有一点点缺失。 – juanchopanza
@juanchopanza编辑,谢谢 –
如果它是一个标准集装箱...
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
是它所拥有的元素的类型(如标准库容器所做的那样)。
它是如何“不起作用”?你会得到什么错误? – juanchopanza