私はそれだけのコードでこれを表示する方が簡単だと思う:C++ - 型* = std :: array <type> :: iteratorと仮定できますか?
#include <iostream>
#include <array>
struct Test
{};
int main()
{
std::array<Test, 1> arr {};
Test* t = arr.begin();
}
arr.beginは()イテレータを返しますが、あなたが見ることができるように私は*テストでそれを参照することができます。これは暗黙のキャストのために可能であると思われますが、これは他のコンパイラでも同様に動作すると期待できますか?
operator T*()
{
return &(*this->CONTAINER)[index];
}
template <typename U>
operator U() = delete;
または何か他のもの:
また、それは暗黙のキャスト、EXを行うオペレータTYPEのですか?事前
** - 1 **最後に、OPの仮説変換演算子は不要であり、 "非常にコンパイラ固有"です。逆に、そのような演算子はありません。標準に準拠しています。 –
s /は標準に準拠していない/おそらく標準に準拠していない/です。私はその主張を証明するのが難しいようです。しかし、そのような演算子を持つことは、非ポインタイテレータを持つ目的と直接衝突するので、実際の実装ではそれを見つけることはできません。 –
@ Cheersandhth.-Alf Fit?いいえ、私は同意します。 OPの実装にはそれがあるのでしょうか?はい、できます。標準に準拠していない実装を直接的には作成しません。私はOPが彼自身の変換演算子を作ったのではなく、実装によって提供されたものを使用することを疑う。 –