2013-10-15 40 views
-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>)线但这当然不工作...如何static_assert容器的基础元素?

+1

它是如何“不起作用”?你会得到什么错误? – juanchopanza

回答

2

你可以使用

static_assert(std::is_same<typename T::value_type,SomeType>::value, "type in the container is different"); 
+1

几乎正确。有一点点缺失。 – juanchopanza

+0

@juanchopanza编辑,谢谢 –

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 
} 
1

您需要类似

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

假定容器类型定义为value_type是它所拥有的元素的类型(如标准库容器所做的那样)。

请参阅std::is_samestatic_assert

相关问题