#include <iostream>
#include <vector>
#include <set>
#include <list>
#include <type_traits>
template<typename C>
void f(C &cont )
{
static_assert( !std::is_same<typename C::value_type, char>::value, "error" );
std::cout << *cont.begin() << std::endl;
}
int main(int argc, char *argv[])
{
std::vector<int> v{1,2,3};
std::list<char> l{'a','b','c'};
std::set<int> s{4,5,6};
f(v);
f(l);
f(s);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8bGlzdD4KI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgoKCnRlbXBsYXRlPHR5cGVuYW1lIEM+CnZvaWQgZihDICZjb250ICkKewogICAgc3RhdGljX2Fzc2VydCggIXN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBDOjp2YWx1ZV90eXBlLCBjaGFyPjo6dmFsdWUsICJlcnJvciIgKTsKICAgIHN0ZDo6Y291dCA8PCAqY29udC5iZWdpbigpIDw8IHN0ZDo6ZW5kbDsKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewogICAgc3RkOjp2ZWN0b3I8aW50PiB2ezEsMiwzfTsKICAgIHN0ZDo6bGlzdDxjaGFyPiBseydhJywnYicsJ2MnfTsKICAgIHN0ZDo6c2V0PGludD4gc3s0LDUsNn07CiAgICBmKHYpOwogICAgZihsKTsKICAgIGYocyk7Cn0K
prog.cpp: In instantiation of ‘void f(C&) [with C = std::__cxx11::list<char>]’:
prog.cpp:21:8: required from here
prog.cpp:11:5: error: static assertion failed: error
static_assert( !std::is_same<typename C::value_type, char>::value, "error" );
^~~~~~~~~~~~~