#include <iostream>
#include <vector>
#include <type_traits>
namespace data
{
struct Foo {};
template <typename T>
void func(const std::vector<typename std::enable_if<std::is_pod<T>::value, T>::type>& contents)
{
std::cout << "Blah" << std::endl;
}
}
int main()
{
std::vector<data::Foo> vec;
func(vec);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+CgpuYW1lc3BhY2UgZGF0YQp7CglzdHJ1Y3QgRm9vIHt9OwoJCgl0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KCXZvaWQgZnVuYyhjb25zdCBzdGQ6OnZlY3Rvcjx0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvZDxUPjo6dmFsdWUsIFQ+Ojp0eXBlPiYgY29udGVudHMpCgl7CgkJc3RkOjpjb3V0IDw8ICJCbGFoIiA8PCBzdGQ6OmVuZGw7Cgl9Cn0KCmludCBtYWluKCkKewoJc3RkOjp2ZWN0b3I8ZGF0YTo6Rm9vPiB2ZWM7CglmdW5jKHZlYyk7CglyZXR1cm4gMDsKfQ==
prog.cpp: In function 'int main()':
prog.cpp:19:10: error: no matching function for call to 'func(std::vector<data::Foo>&)'
func(vec);
^
prog.cpp:10:7: note: candidate: template<class T> void data::func(const std::vector<typename std::enable_if<std::is_pod<T>::value, T>::type>&)
void func(const std::vector<typename std::enable_if<std::is_pod<T>::value, T>::type>& contents)
^
prog.cpp:10:7: note: template argument deduction/substitution failed:
prog.cpp:19:10: note: couldn't deduce template parameter 'T'
func(vec);
^