diff --git a/src/activity_item_handling.cpp b/src/activity_item_handling.cpp
index 0b59272..a7dc11e 100644
--- a/src/activity_item_handling.cpp
+++ b/src/activity_item_handling.cpp
@@ -1146,7 +1146,7 @@ static activity_reason_info find_base_construction(
//we can't immediately build it, looking for pre-req
used.insert( idx );
- cata::optional<do_activity_reason> reason;
+ cata::optional<do_activity_reason> reason = { };
construction_id pre_req_idx( -1 );
//first step: try only constructions with the same description
//second step: try all constructions
diff --git a/src/avatar.cpp b/src/avatar.cpp
index 6c17505..4d33e34 100644
--- a/src/avatar.cpp
+++ b/src/avatar.cpp
@@ -416,7 +416,7 @@ bool avatar::read( item &it, const bool continuous )
// special guidebook effect: print a misc. hint when read
if( reader != this ) {
add_msg( m_info, fail_messages[0] );
- dynamic_cast<const npc *>( reader )->say( get_hint() );
+ dynamic_cast<const npc &>( *reader ).say( get_hint() );
} else {
add_msg( m_info, get_hint() );
}
diff --git a/src/avatar_action.cpp b/src/avatar_action.cpp
index 1a7149c..728e51d 100644
--- a/src/avatar_action.cpp
+++ b/src/avatar_action.cpp
@@ -595,7 +595,7 @@ void avatar_action::autoattack( avatar &you, map &m )
if( !c->is_npc() ) {
return false;
}
- return !dynamic_cast<const npc *>( c )->is_enemy();
+ return !dynamic_cast<const npc &>( *c ).is_enemy();
} ), critters.end() );
if( critters.empty() ) {
add_msg( m_info, _( "No hostile creature in reach. Waiting a turn." ) );
diff --git a/src/item.cpp b/src/item.cpp
index 635b56c..194df4d 100644
--- a/src/item.cpp
+++ b/src/item.cpp
@@ -7799,13 +7799,13 @@ units::volume item::get_total_capacity() const
// future then this probably warrants a new method on use_function to
// access this information generically.
if( is_bandolier() ) {
- result += dynamic_cast<const bandolier_actor *>
- ( type->get_use( "bandolier" )->get_actor_ptr() )->max_stored_volume();
+ result += dynamic_cast<const bandolier_actor &>
+ ( *type->get_use( "bandolier" )->get_actor_ptr() ).max_stored_volume();
}
if( is_holster() ) {
- result += dynamic_cast<const holster_actor *>
- ( type->get_use( "holster" )->get_actor_ptr() )->max_stored_volume();
+ result += dynamic_cast<const holster_actor &>
+ ( *type->get_use( "holster" )->get_actor_ptr() ).max_stored_volume();
}
return result;
diff --git a/src/bionics.cpp b/src/bionics.cpp
index ea39bbd..0b2a356 100644
--- a/src/bionics.cpp
+++ b/src/bionics.cpp
@@ -1290,7 +1290,7 @@ void Character::heat_emission( int b, int fuel_energy )
const int heat_spread = std::max( heat_prod / 10 - heat_level, 1 );
g->m.emit_field( pos(), hotness, heat_spread );
}
- for( const std::pair<body_part, size_t> &bp : bio.info().occupied_bodyparts ) {
+ for( const std::pair<const body_part, size_t> &bp : bio.info().occupied_bodyparts ) {
add_effect( effect_heating_bionic, 2_seconds, bp.first, false, heat_prod );
}
}
diff --git a/src/item.cpp b/src/item.cpp
index 194df4d..5918105 100644
--- a/src/item.cpp
+++ b/src/item.cpp
@@ -3185,7 +3185,7 @@ void item::final_info( std::vector<iteminfo> &info, const iteminfo_query *parts,
info.push_back( iteminfo( "DESCRIPTION",
_( "<bold>Environmental Protection:</bold> " ),
iteminfo::no_newline ) );
- for( const std::pair< body_part, size_t > &element : bid->env_protec ) {
+ for( const std::pair<const body_part, size_t > &element : bid->env_protec ) {
info.push_back( iteminfo( "CBM", body_part_name_as_heading( element.first, 1 ),
" <num> ", iteminfo::no_newline, element.second ) );
}
@@ -3195,7 +3195,7 @@ void item::final_info( std::vector<iteminfo> &info, const iteminfo_query *parts,
info.push_back( iteminfo( "DESCRIPTION",
_( "<bold>Bash Protection:</bold> " ),
iteminfo::no_newline ) );
- for( const std::pair< body_part, size_t > &element : bid->bash_protec ) {
+ for( const std::pair<const body_part, size_t > &element : bid->bash_protec ) {
info.push_back( iteminfo( "CBM", body_part_name_as_heading( element.first, 1 ),
" <num> ", iteminfo::no_newline, element.second ) );
}
@@ -3204,7 +3204,7 @@ void item::final_info( std::vector<iteminfo> &info, const iteminfo_query *parts,
info.push_back( iteminfo( "DESCRIPTION",
_( "<bold>Cut Protection:</bold> " ),
iteminfo::no_newline ) );
- for( const std::pair< body_part, size_t > &element : bid->cut_protec ) {
+ for( const std::pair<const body_part, size_t > &element : bid->cut_protec ) {
info.push_back( iteminfo( "CBM", body_part_name_as_heading( element.first, 1 ),
" <num> ", iteminfo::no_newline, element.second ) );
}
diff --git a/src/monster.cpp b/src/monster.cpp
index d3c4599..3d56924 100644
--- a/src/monster.cpp
+++ b/src/monster.cpp
@@ -2055,7 +2055,7 @@ void monster::process_turn()
{
decrement_summon_timer();
if( !is_hallucination() ) {
- for( const std::pair<emit_id, time_duration> &e : type->emit_fields ) {
+ for( const std::pair<const emit_id, time_duration> &e : type->emit_fields ) {
if( !calendar::once_every( e.second ) ) {
continue;
}
diff --git a/src/monstergenerator.cpp b/src/monstergenerator.cpp
index f11ba0e..8a371fa 100644
--- a/src/monstergenerator.cpp
+++ b/src/monstergenerator.cpp
@@ -1177,7 +1177,7 @@ void MonsterGenerator::check_monster_definitions() const
}
}
- for( const std::pair<emit_id, time_duration> &e : mon.emit_fields ) {
+ for( const std::pair<const emit_id, time_duration> &e : mon.emit_fields ) {
const emit_id emid = e.first;
if( !emid.is_valid() ) {
debugmsg( "monster %s has invalid emit source %s", mon.id.c_str(), emid.c_str() );
diff --git a/src/recipe.cpp b/src/recipe.cpp
index cc7b022..a89c13d 100644
--- a/src/recipe.cpp
+++ b/src/recipe.cpp
@@ -274,7 +274,7 @@ void recipe::load( const JsonObject &jo, const std::string &src )
for( JsonArray cur : jneeds.get_array( "skills" ) ) {
skills_blueprint[skill_id( cur.get_string( 0 ) )] = cur.get_int( 1 );
}
- for( const std::pair<skill_id, int> &p : skills_blueprint ) {
+ for( const std::pair<const skill_id, int> &p : skills_blueprint ) {
const auto it = required_skills.find( p.first );
if( it == required_skills.end() ) {
required_skills.emplace( p );
@@ -667,7 +667,7 @@ void recipe::check_blueprint_requirements()
jsout.member( "skills" );
jsout.start_array( /*wrap=*/!total_reqs.skills.empty() );
- for( const std::pair<skill_id, int> &p : total_reqs.skills ) {
+ for( const std::pair<const skill_id, int> &p : total_reqs.skills ) {
jsout.start_array();
jsout.write( p.first );
jsout.write( p.second );
diff --git a/tests/crafting_test.cpp b/tests/crafting_test.cpp
index 1cc0996..3ef4d8d 100644
--- a/tests/crafting_test.cpp
+++ b/tests/crafting_test.cpp
@@ -124,7 +124,7 @@ TEST_CASE( "available_recipes", "[recipes]" )
GIVEN( "a recipe that can be automatically learned" ) {
WHEN( "the player has lower skill" ) {
- for( const std::pair<skill_id, int> &skl : r->required_skills ) {
+ for( const std::pair<const skill_id, int> &skl : r->required_skills ) {
dummy.set_skill_level( skl.first, skl.second - 1 );
}
@@ -134,7 +134,7 @@ TEST_CASE( "available_recipes", "[recipes]" )
}
WHEN( "the player has just the skill that's required" ) {
dummy.set_skill_level( r->skill_used, r->difficulty );
- for( const std::pair<skill_id, int> &skl : r->required_skills ) {
+ for( const std::pair<const skill_id, int> &skl : r->required_skills ) {
dummy.set_skill_level( skl.first, skl.second );
}
@@ -143,7 +143,7 @@ TEST_CASE( "available_recipes", "[recipes]" )
AND_WHEN( "his skill rusts" ) {
dummy.set_skill_level( r->skill_used, 0 );
- for( const std::pair<skill_id, int> &skl : r->required_skills ) {
+ for( const std::pair<const skill_id, int> &skl : r->required_skills ) {
dummy.set_skill_level( skl.first, 0 );
}
@@ -167,7 +167,7 @@ TEST_CASE( "available_recipes", "[recipes]" )
dummy.set_skill_level( r->skill_used, 2 );
// Secondary skills are just set to be what the autolearn requires
// but the primary is not
- for( const std::pair<skill_id, int> &skl : r->required_skills ) {
+ for( const std::pair<const skill_id, int> &skl : r->required_skills ) {
dummy.set_skill_level( skl.first, skl.second );
}
@@ -287,7 +287,7 @@ static void prep_craft( const recipe_id &rid, const std::vector<item> &tools,
const recipe &r = rid.obj();
// Ensure adequate skill for all "required" skills
- for( const std::pair<skill_id, int> &skl : r.required_skills ) {
+ for( const std::pair<const skill_id, int> &skl : r.required_skills ) {
g->u.set_skill_level( skl.first, skl.second );
}
// and just in case "used" skill difficulty is higher, set that too