重複の可能性:
参照が崩壊していますか?
template<
class T = const std::vector<int> &
> void f(const T &);
T
が既に参照されている場合const
、どうなりますか? なぜこのコードはコンパイルされるのでしょうか?
重複の可能性:
参照が崩壊していますか?
template<
class T = const std::vector<int> &
> void f(const T &);
T
が既に参照されている場合const
、どうなりますか? なぜこのコードはコンパイルされるのでしょうか?
これは & と同等でconst (const std::vector<int>&)
あり、この場合、const
const T への const 参照を持つことはできず、const T への参照のみを持つことができないため、the は無視されます。参照は再配置できないため、const
とにかく冗長になります。const
また、持っている を無視する(T&) &
と、C++11 の参照崩壊規則により、これは になりT&
ます。したがって、最終結果はconst T&
またconst std::vector<int>&
はあなたの場合です。
もしあなたが持っていれば、それはポインタを作るものにconst T*
なるので違いがあります.const (const std::vector<int>&)* p
const