MS directX 11 DXUT の例を調べると、次のコードが表示されました。
template<typename TYPE> HRESULT CGrowableArray <TYPE>::SetSize( int nNewMaxSize )
{
int nOldSize = m_nSize;
if( nOldSize > nNewMaxSize )
{
assert( m_pData );
if( m_pData )
{
// Removing elements. Call dtor.
for( int i = nNewMaxSize; i < nOldSize; ++i )
m_pData[i].~TYPE();
}
}
// Adjust buffer. Note that there's no need to check for error
// since if it happens, nOldSize == nNewMaxSize will be true.)
HRESULT hr = SetSizeInternal( nNewMaxSize );
if( nOldSize < nNewMaxSize )
{
assert( m_pData );
if( m_pData )
{
// Adding elements. Call ctor.
for( int i = nOldSize; i < nNewMaxSize; ++i )
::new ( &m_pData[i] ) TYPE;
}
}
return hr;
}
これは、私のバージョンの DXSDK (June2010) の 428 行目の DXUTmisc.h にあります。私はそれについて疑問に思っています::新しいこと....私はスタックオーバーフローでGoogleと検索しようとしていますが、検索バーに「::new」と入力すると、検索エンジンが2つのコロンを破棄しているようです... .