c++ 根据类模板参数启用成员函数重载

hiz5n14c  于 2023-07-01  发布在  其他
关注(0)|答案(1)|浏览(100)

这可能是一个愚蠢的问题,但我可以在没有模板参数的情况下使用requires子句吗?我有以下案例:
演示

#include <concepts>
#include <iostream>

template <typename T>
struct entity {
    requires (std::same_as<T, int>) 
    auto operator=(const entity&) { std::cout << "with T == int" << std::endl; return *this; }

    auto operator=(const entity&) { std::cout << "all else" << std::endl; return *this; }
};

我想启用一个基于类模板参数的重载,而不是方法模板参数。我该如何内联和使用概念来实现这一点?

nwo49xxi

nwo49xxi1#

您只需要将requires-子句放在成员函数的 parameter-list 之后

template <typename T>
struct entity {
  auto operator=(const entity&)
    requires (std::same_as<T, int>) 
  { /* */ }

  auto operator=(const entity&) { /* */ }
};

Demo

相关问题