C++에서 템플릿 인자를 특정 형식으로 제한하는 방법이 있나요?

HDNua의 이미지

C++에서 템플릿 인자를 특정 형식으로 제한하는 방법이 있나요?

Java에서는 다음과 같이 제네릭 리스트의 타입 T가 Comparable 타입이라고 명시할 수 있습니다.
class Node> {

private T data;

public T getData() {
return data;
}

public void setData(T data) {
this.data = data;
}
}

C++ std::vector의 템플릿 인자로 타입의 개체만 받으려고 하는데 검색이 쉽지 않네요.
아시는 분 계신가 합니다.

svperbeast의 이미지

#include <type_traits>
 
template <typename T>
struct Node
{
  static_assert(std::is_same<T, unsigned int>::value, "T must be unsigned int type.");
...
};

HDNua의 이미지

정신이 없었는지 글을 올려놓고 이제서야 답글 달아주신 것을 확인했네요. 늦게나마 감사드립니다 :)

저는 이렇게 생각했습니다.

익명 사용자의 이미지

C++20를 사용하신다면, concept이 같은 기능을 할겁니다.

https://en.cppreference.com/w/cpp/language/constraints

예컨대 java의 Comparable에 대응되는 concept으로는 StrictTotallyOrdered이 있는 듯.

https://en.cppreference.com/w/cpp/concepts/StrictTotallyOrdered