c++ 构造一个类,该类具有带给定参数的默认参数

kqqjbcuj  于 2024-01-09  发布在  其他
关注(0)|答案(1)|浏览(236)

例如,我有一个随机类,它的构造函数有一些默认参数,我有一个函数用一些给定的参数构造类,我需要以某种方式检查我是否能用这些给定的参数构造类

  1. class someRandomClass
  2. {
  3. public:
  4. someRandomClass(int a = 0, float b = 0.f, double c = 0.0, const char* d = "") {}
  5. // any argument you can think of
  6. };
  7. template<typename Cls, typename... Ts>
  8. void constructClass(Ts... args) {
  9. // something to check
  10. if (constructable(Cls, Ts...))
  11. Cls myClass(args...);
  12. }

字符串
是否有一些方法可以实现这一点?

bqujaahr

bqujaahr1#

std::is_constructible traits可能会有帮助(你可以摆脱fake_constructor:-)):

  1. template<typename Cls, typename... Ts>
  2. // requires(std::is_constructible_v<Cls, Ts&&...>) // C++20,
  3. // or SFINAE for previous version
  4. void callClassConstructor(Ts&&... args)
  5. {
  6. if constexpr (std::is_constructible_v<Cls, Ts&&...>)
  7. {
  8. Cls myClass(std::foward<Ts>(args)...);
  9. // ....
  10. }
  11. }

字符串

相关问题