// StackOverflow.cpp : Defines the entry point for the console application.
//
#include <iostream>
#include <vector>
using namespace std;
template<typename T, class CONT>
struct foo_policy
{
static inline void execute() {
cout << "regular foo: \n" ;
}
};
template<typename T>
struct foo_policy<T, std::vector<T*>>
{
static inline void execute() {
cout << "specialized foo: \n" ;
}
};
template<class T , class CONT >
class Container
{
private:
CONT container;
T someData;
public:
void foo()
{
foo_policy<T,CONT>::execute();
}
};
int main()
{
Container<int, std::vector<int>> a;
Container<int, std::vector<int*>> b;
a.foo();
b.foo();
// your code goes here
return 0;
}
Ly8gU3RhY2tPdmVyZmxvdy5jcHAgOiBEZWZpbmVzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIGNvbnNvbGUgYXBwbGljYXRpb24uCi8vCiAgICAjaW5jbHVkZSA8aW9zdHJlYW0+CiAgICAjaW5jbHVkZSA8dmVjdG9yPgogICAgCiAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwogICAgCiAgICAKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzIENPTlQ+CiAgICBzdHJ1Y3QgZm9vX3BvbGljeQogICAgewogICAgCXN0YXRpYyBpbmxpbmUgdm9pZCBleGVjdXRlKCkgewogICAgCQljb3V0IDw8ICJyZWd1bGFyIGZvbzogXG4iIDsKICAgIAl9CiAgICB9OwogICAgCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgc3RydWN0IGZvb19wb2xpY3k8VCwgc3RkOjp2ZWN0b3I8VCo+PgogICAgewogICAgCXN0YXRpYyBpbmxpbmUgdm9pZCBleGVjdXRlKCkgewogICAgCQljb3V0IDw8ICJzcGVjaWFsaXplZCBmb286IFxuIiA7CiAgICAJfQogICAgfTsKICAgIAogICAgCiAgICAKICAgIHRlbXBsYXRlPGNsYXNzIFQgLCAgIGNsYXNzIENPTlQgID4KICAgIGNsYXNzIENvbnRhaW5lciAKICAgIHsKICAgIHByaXZhdGU6CiAgICAJQ09OVCBjb250YWluZXI7CiAgICAJVCAgICBzb21lRGF0YTsKICAgIHB1YmxpYzoKICAgIAl2b2lkIGZvbygpCiAgICAJewogICAgCQlmb29fcG9saWN5PFQsQ09OVD46OmV4ZWN1dGUoKTsKICAgIAl9CiAgICB9OwogICAgCiAgICAKICAgIAogICAgaW50IG1haW4oKSAKICAgIHsKICAgIAlDb250YWluZXI8aW50LCBzdGQ6OnZlY3RvcjxpbnQ+PiAgYTsKICAgIAlDb250YWluZXI8aW50LCBzdGQ6OnZlY3RvcjxpbnQqPj4gYjsKICAgIAogICAgCWEuZm9vKCk7CiAgICAJYi5mb28oKTsKICAgIAogICAgCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKICAgIAlyZXR1cm4gMDsKICAgIH0=