No, this is not true. If you include GPL'd code in your code, then your code's license is unchanged. You do not have to license your code under the GPL just to use GPL'd code.
No, the GPL linking exception exists to allow proprietary code to link against GPL'd code.
It is a common myth (propagated by anti-GPL activists) that using GPL'd code in your software requires you to put your software under the GPL. In reality, your code can be under nearly any open-source license.
I often receive emails from users asking me to re-license one of my libraries from GPL to BSD/MIT so they can use it in their own open-source projects. These users are often confused when I tell them that they can have a BSD/MIT project depend on GPL'd code.
Everyone who cares about the health of Free software (and open-source in general) should be careful not to fall prey to this misinformation campaign.
It depends on what sort of "derivative" it is. Follow these two simple rules of thumb:
1. You can't change the license on other people's code.
2. Other people can't change the license on your code.
-----------
1.
If you fork an application licensed under the GPL, and you make some changes, the original code is still licensed under the GPL. You may not distribute it under the BSD or MIT licenses.
If your changes are big enough, you could maybe license just those under a more permissive license, but then your final product really has two licenses (see case #2).
-----------
2.
If you fork an application licensed under 3-clause BSD, and you copy code into it from both a GPL'd library and an MIT'd library. The application's code is still BSD'd, but your project itself is now derived a derived work of three separate projects (with three separate licenses), and you will need to obey all of them:
* You will need to include the licence text and copyright information of all three projects (required by GPL BSD MIT)
* You may not use the names of the original application's authors to endorse or promote your work (required by BSD). You may use the names of the GPL or MIT library authors (permitted by GPL MIT).
* Anyone who compiles binaries of your project, including yourself, will need to include the complete corresponding source code (required by GPL).
-----------
Note that there's a difference between having a choice between multiple licences (aka "dual-licensed", "multi-licensed") and having a codebase covered by multiple licenses.
Perhaps I was not clear, but I was saying the same thing as your first sentence.
When people are concerned about including GPL in their work code (as the OP is) then they are typically concerned with issues of linking/importing/etc.
So are you saying I can copy and paste some useful functions from your GPL code into my BSD code? And then the next person can use my code (with the pasted code from your project) in their proprietary software, given they stick to the requirements from my BSD license?
As far as I understand, the viral nature of the GPL does not allow this.
If you copy and paste functions into your code, then those functions are still under the GPL, and your code is still under the BSD.
Anybody could then copy and paste your BSD code into their proprietary software, and only have to conform to the BSD licence's requirements.
The main issue with this is that it when you mix code from various sources in the same file, it can be very difficult for readers to know what licenses each section of code has. For that reason, when I need to include code which has a different license or copyright from the main work, then I put it in its own file with its own copyright/license header.