любые манипуляции с адресной арифметикой запрещены в самом стандарте
но формат пути только такой.
void somefunc() {do_something_with blabla::a2}
template< typename TEnumType, typename TValueType >
class EnumValues final
{
static_assert( std::is_enum<TEnumType>::value, "The `TEnumType` type have to be enumeration." );
public:
using UnderlyingType = std::underlying_type_t<TEnumType>;
using Values = std::array<TValueType, static_cast<UnderlyingType>( TEnumType::MAX )>;
EnumValues() = default;
EnumValues( const EnumValues& ) = default;
EnumValues( EnumValues&& ) = default;
EnumValues( std::initializer_list<TValueType> values );
EnumValues( const Values& values );
EnumValues( Values&& values );
inline EnumValues& operator = ( cosnt EnumValues& ) = default;
inline EnumValues& operator = ( EnumValues&& ) = default;
inline EnumValues& operator = ( std::initializer_list<TValueType> values );
inline EnumValues& operator = ( const Values& values );
inline EnumValues& operator = ( Values&& values );
inline TValueType& operator [] ( const TEnumType value ) { return m_values[ static_cast<UnderlyingType>( value ) ]; };
inline const TValueType& operator [] ( const TEnumType value ) const { return m_values[ static_cast<UnderlyingType>( value ) ]; };
private:
Values m_values;
};
enum class ValueIndices
{
qqq = 0,
www,
NAX_VALUES
};
using Values = std::array<int32_t, size_t( ValueIndices::MAX_VALUES )>;
Направление пока не важно, хочу делать все и много, а идей нет.
const size_t GetIntersectionsNumber( const std::string& left, const std::string& right )
{
bool char_mask[256] = { 0 };
for( int c : left )
{
char_mask[ c ] = true;
}
size_t intersections = 0;
for( int c : right )
{
intersections += char_mask[ c ];
char_mask[ c ] = false;
}
return intersections;
}
auto my_ptr = std::make_shared<MyType>();
std::map<std::string, std::vector<std::shared_ptr<std::pair<std::string, std::wstring>>>> uber_map;
auto found_item = uber_map.find( "foo" );
auto& out = in;
decltype( auto ) out = in;
Он же сначала копируется при присваивании 'out = in'
а потом еще раз во время ретёрна
Именно. А это разве называется адресной арифметикой? У меня иные данные.
Т.е. ты предлагаешь посмотреть на ошибку, но не покажешь конкретный код, который нуждается в исправлении? :)
Стандарт прозрачен и без этого кода. Если тебе надо решить возникшую проблему, то давай смотреть на проблему и анализировать проблему, а не примеры несоблюдения стандарта.