#include <iostream>
#include <locale>
int main()
{
    std::setlocale(LC_CTYPE, "");
    std::wcout << L"あいうえお" << std::endl;
}

とすると、あいうえお と出力されます。

#include <iostream>
#include <locale>
int main()
{
    std::setlocale(LC_CTYPE, "");
    std::cout << "あいうえお" << std::endl;
}

とすると、やはりあいうえお と出力されます。
ところが、

#include <iostream>
#include <locale>
int main()
{
    std::setlocale(LC_CTYPE, "");
    std::cout << "あいうえお" << std::endl;
    std::wcout << L"あいうえお" << std::endl;
}

とすると

あいうえお
あいうえお

を期待していましたが

あいうえお
BDFHJ

と出力されます。

    std::wcout << L"あいうえお" << std::endl;

が正しく表示さなく、BDFHJと出力されます。

そもそもstd::coutとstd::wcoutを混在させることはまれなので、さほど大きな問題とはかんじていないのですが、不思議な結果に驚いています。

質問
これは仕様通りの結果なのでしょうか?

環境は、
Ubuntu14.04(x86_64)
LANG="ja_JP.UTF-8"

g++ version 4.8.5
clang++ version 3.4
で結果は同じでした。