【问题标题】:No template argument?没有模板参数?
【发布时间】:2018-08-05 02:57:01
【问题描述】:

当我看到这段代码(来自 Asio)时,我很困惑

template <typename>
struct associated_allocator_check
{
  typedef void type;
};

似乎没有模板参数。我在我的 C++ 书籍中找不到类似的代码。如果有人能向我解释这一点,我将不胜感激。

【问题讨论】:

  • 提示:你知道void f(int x) -> void f(int)吗?
  • 有一个模板参数。它只是未命名。没有理由命名它,因为它无论如何都被忽略了。
  • user202729 我当然知道。
  • c++ - What does "typename =" mean in the template parameters?(唯一的区别是链接的模板参数有默认值)

标签: c++


【解决方案1】:

看看下面提到unnamed function parameters in C++/C的问题。

与您的情况类似,模板参数未使用,因此为避免编译器警告“未使用的模板参数”,您只需不明确命名它...问题已解决。

【讨论】:

  • 那么,为了避免编译器警告而做一些事情是一种好的编程习惯吗?
  • 有时你有一个接口需要的参数,但函数不使用它。也许该参数不再需要,仅在必须使用相同签名的其他函数中是必需的(特别是可以通过指针调用它们)或者该功能尚未实现。当出现这些情况时,最好使用此方法来避免编译器警告。还应添加注释以突出未使用的参数是有意的而不是偶然的。如果未使用的参数确实无关紧要,则将其排除在外。
  • @CheungBrian 编译器警告是编译器告诉您您可能犯了错误。如果您没有犯错,最好调整代码以消除警告并更容易发现您所犯错误的警告。任何时候你看到一个警告,地址,而不是忽略,它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 2016-11-07
  • 1970-01-01
  • 2011-10-25
  • 2012-04-14
  • 2014-09-08
  • 2014-02-26
相关资源
最近更新 更多