Wymuszenie konkretnych typów w klasie szablonowej z wykorzystaniem asercji

0

Czy jest jakiś sposób aby wymusić używanie danej klasy tylko z konkretnymi typami?
Chcicałbym by klasa mogła być używana tylko ze stringami i intami, a każda inna próba skończy się informacją dla użytkownika?
Da się to zrobić za pomocą asercji, jeżeli tak to w jaki sposób?

template<typename T, typename V>
class Foo {
public:
  Foo(T t, V v) : t(t), v(v) {};
  
  
private:
  T t;
  V v;
}
Foo<string, string>("foo", "bar") {};	//Ok
Foo<int, int>(1, 1) {};			//Ok
Foo<double, double>(1.1, 1.2) {};		//Error
0

Static assert albo pełna specializacja tylko z twoimi typami. Jednak czy na pewno potrzebujesz takich restrykcji? Może w pewnym momencie będziesz potrzebował int64_t? Albo wstring? Co wtedy?

1 użytkowników online, w tym zalogowanych: 0, gości: 1