Ubuntu 16.04.6 LTS, g++ 5.4.0 では、次のように書くと期待通り
すべての結果が 1 になります。
コード:  
#include <iostream>
int main()
{
	std::setlocale(LC_CTYPE, "");
	std::cout << iswprint(L'♪') << " " << iswgraph(L'♪') << std::endl;
	std::cout << iswprint(L'√') << " " << iswgraph(L'√') << std::endl;
	return 0;
}
ただし、setlocale を削除するか、あるいはそれと同等の
setlocale(LC_CTYPE, "C"); にすると、結果はすべて 0 になります。
Windows では、isw~ が期待通りに動かないようなので、
次のように GetStringTypeW を使って、isW~ を作ればよいでしょう。
コード:  
#include <windows.h>
#include <iostream>
int isWprint(wchar_t wc)
{
	WORD t;
	GetStringTypeW(CT_CTYPE1, &wc, 1, &t);
	return (t & C1_DEFINED) && !(t & C1_CNTRL);
}
int isWgraph(wchar_t wc)
{
	WORD t;
	GetStringTypeW(CT_CTYPE1, &wc, 1, &t);
	return (t & C1_DEFINED) && !(t & C1_CNTRL) && !(t & C1_SPACE);
}
int main()
{
	std::cout << isWprint(L'♪') << " " << isWgraph(L'♪') << std::endl;
	std::cout << isWprint(L'√') << " " << isWgraph(L'√') << std::endl;
	return 0;
}
GetStringTypeW の機能を調べるために次のようなプログラムを
書いてみました。
コード:  
#include <windows.h> // GetStringTypeW
#include <stdio.h>   // printf
#include <locale.h>  // setlocale
void show(wchar_t wc)
{
	static char *s[] = {
		"upper", "lower", "digit", "space", "punct",
		"cntrl", "blank", "xdigit", "alpha", "defined"
	};
	WORD t;
	GetStringTypeW(CT_CTYPE1, &wc, 1, &t);
	printf("  %04x '%lc' %02x [", wc, wc, t);
	for (int i = 10; --i >= 0; )
		if (t & 1<<i) printf(" %s", s[i]);
	printf(" ]\n");
}
int main(void)
{
	setlocale(LC_CTYPE, "");
	show(L'\0');
	show(L'A'); show(L'z'); show(L'9'); show(L' '); show(L':');
	show(L'\a'); show(L'\t');
	show(L'♪'); show(L'√'); show(L' '); show(L'ぁ'-1);
	show(L'A'); show(L'z'); show(L'9'); show(L';');
}
GetStringTypeW は locale には影響されませんが、
printf で "%lc" を使うために setlocale を呼び出しています。
実行結果
コード:  
  0000 ' ' 220 [ defined cntrl ]
  0041 'A' 381 [ defined alpha xdigit upper ]
  007a 'z' 302 [ defined alpha lower ]
  0039 '9' 284 [ defined xdigit digit ]
  0020 ' ' 248 [ defined blank space ]
  003a ':' 210 [ defined punct ]
  0007 '' 220 [ defined cntrl ]
  0009 '        ' 268 [ defined blank cntrl space ]
  266a '♪' 200 [ defined ]
  221a '√' 200 [ defined ]
  3000 ' ' 248 [ defined blank space ]
  3040 '' 00 [ ]
  ff21 'A' 381 [ defined alpha xdigit upper ]
  ff5a 'z' 302 [ defined alpha lower ]
  ff19 '9' 284 [ defined xdigit digit ]
  ff1b ';' 210 [ defined punct ]