You can use the following flags -std=c++11 -Wfloat-conversion -Wsystem-headers
to make GCC additionally at least warn for this LOC as well
std::copy(vsource.begin(), vsource.end(), vtarget3.begin());
as well as you can see here.
The output is then
: In function 'int main()':
:21:34: warning: conversion from '__gnu_cxx::__alloc_traits, double>::value_type' {aka 'double'} to 'std::vector::value_type' {aka 'int'} may change value [-Wfloat-conversion]
21 | vtarget1.push_back(vsource.at(0));
| ~~~~~~~~~~^~~
:38:18: warning: conversion from 'double' to 'int' may change value [-Wfloat-conversion]
38 | *target = *source;
| ^~~~~~~
In file included from /opt/compiler-explorer/gcc-trunk-20180917/include/c++/9.0.0/bits/char_traits.h:39,
from /opt/compiler-explorer/gcc-trunk-20180917/include/c++/9.0.0/ios:40,
from /opt/compiler-explorer/gcc-trunk-20180917/include/c++/9.0.0/ostream:38,
from /opt/compiler-explorer/gcc-trunk-20180917/include/c++/9.0.0/iostream:39,
from :1:
/opt/compiler-explorer/gcc-trunk-20180917/include/c++/9.0.0/bits/stl_algobase.h: In instantiation of 'static _OI std::__copy_move::__copy_m(_II, _II, _OI) [with _II = double*; _OI = int*]':
/opt/compiler-explorer/gcc-trunk-20180917/include/c++/9.0.0/bits/stl_algobase.h:400:30: required from '_OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = false; _II = double*; _OI = int*]'
/opt/compiler-explorer/gcc-trunk-20180917/include/c++/9.0.0/bits/stl_algobase.h:437:30: required from '_OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false; _II = __gnu_cxx::__normal_iterator >; _OI = __gnu_cxx::__normal_iterator >]'
/opt/compiler-explorer/gcc-trunk-20180917/include/c++/9.0.0/bits/stl_algobase.h:470:7: required from '_OI std::copy(_II, _II, _OI) [with _II = __gnu_cxx::__normal_iterator >; _OI = __gnu_cxx::__normal_iterator >]'
:28:63: required from here
/opt/compiler-explorer/gcc-trunk-20180917/include/c++/9.0.0/bits/stl_algobase.h:338:18: warning: conversion from 'double' to 'int' may change value [-Wfloat-conversion]
338 | *__result = *__first;
| ^
Compiler returned: 0
As for clang: This flag set is rather verbose and not really giving more insight.