当重复声明具有默认参数的模板类时,出现错误:
<source>:12:23: error: redefinition of default argument for 'class<template-parameter-1-2>'
12 | template <typename T, typename = T>
| ^~~~~~~~
<source>:9:23: note: original definition appeared here
9 | template <typename T, typename = T>
|
重复没有默认参数的模板前向声明不会产生任何错误。重复相同的操作,但不使用默认参数也可以(但在我看来这没有意义,应该会产生一些错误)。
以下是整个示例:
template <typename T>
struct ok;
template <typename T>
struct ok;
template <typename T, typename = T>
struct not_ok;
template <typename T, typename = T>
struct not_ok;
template <typename T, typename = T>
struct why_is_it_ok;
template <typename T, typename>
struct why_is_it_ok;
为什么?